sparkplug604/praxis

Turn scattered knowledge, operational data, and history into source-linked context that your agents can inspect, explain, and reuse.

49

stars

20

commits

Python

primary language

Jun 17, 2026

updated

agentic-ai
agentic-rag
agent-memory
agent-skills
ai-agents
ai-workflows
context-engineering
developer-tools
hybrid-search
knowledge-graph
knowledge-management
llm
llmops
local-first
python
rag
retrieval-augmented-generation
semantic-search
skillgraph
sqlite

README

Praxis

Praxis gives AI agents shared organizational memory.

Most organizations have important knowledge spread across CRMs, documents, spreadsheets, analytics tools, support systems, meetings, internal notes, and historical decisions. An agent can be smart and still be blind if it only sees one pasted file, one stale export, or one narrow database.

Praxis turns scattered knowledge, operational data, and history into searchable, source-linked context that agents can inspect, explain, and reuse.

It is designed for teams whose work depends on context across disconnected systems: legal firms, managed service firms, healthcare organizations, security teams, product teams, enterprise marketing teams, agencies, consultants, and internal operations teams.

Praxis Core runs locally today. Praxis Reach and Reach for Agencies extend that model toward live operational systems and multi-client workflows. Praxis is not a hosted service, CRM, warehouse, BI tool, or autonomous agent runtime.

Why Praxis Exists

Claude, ChatGPT, and other agents can reason, write, summarize, and act. But they still need the right business memory.

If the answer depends on customer history, operational data, prior decisions, source documents, account notes, incident records, case files, or campaign results, the agent needs more than a prompt. It needs a way to find the right context, understand where it came from, notice when sources disagree, and keep useful knowledge available for the next task.

Praxis is that context layer.

Example questions Praxis is designed to support:

TeamA Question An Agent Might Need Context For
Agency or marketing teamWhich campaigns produced paying customers last quarter?
Legal firmWhat prior matters, research, filings, and client notes are relevant to this case?
Security teamWhat happened in similar incidents, and which response steps were used?
Product teamWhich customer complaints, roadmap decisions, support tickets, and release notes connect to this feature?
Managed service firmWhat does this client run, what changed recently, and what has broken before?
Healthcare or operations teamWhich policies, handoffs, reports, and historical decisions matter for this workflow?

What Makes Praxis Different

Praxis is not just a folder of documents and not just a vector search demo. It is built around the idea that agents should work from memory they can inspect.

A Normal RAG Setup Often...Praxis Adds...
Finds similar text chunks.Ranks context using relevance, source state, freshness, trust, graph signals, entity hints, and conflicts.
Gives an answer without enough trail.Keeps source IDs, capture IDs, hashes, parse quality, confidence, and metadata attached.
Treats all retrieved text like it is equally current.Tracks freshness, active/deprecated status, and source-level trust.
Hides contradictions inside the final answer.Can surface disagreements as warning lights instead of silently picking a winner.
Solves one query at a time.Lets reviewed knowledge become reusable references and agent-supporting files.
Struggles with boundaries between clients, accounts, or projects.Provides the foundation for scoped context capsules and multi-client workflows.

Put simply: Praxis helps an agent know what it knows, where it came from, whether it is still current, and when something looks disputed.

Read more: How Praxis Core Is Different, Retrieval Pipeline, and Conflicts And Dedupe.

How Sources Become Agent Context

flowchart LR
    sources["Sources<br/>docs, data, audio, video, live systems"]
    capture["Capture<br/>source IDs, hashes, metadata"]
    memory["Memory<br/>archive, graph, chunks, embeddings"]
    ranking["Context ranking<br/>trust, freshness, relevance, conflicts"]
    explained["Explained context<br/>source trail, warnings"]
    agent["Agent-ready output<br/>answer, report, workflow"]

    sources --> capture --> memory --> ranking --> explained --> agent

    classDef source fill:#f6f8fa,stroke:#8b949e,color:#24292f;
    classDef core fill:#eef6ff,stroke:#0969da,color:#24292f;
    classDef output fill:#fff8c5,stroke:#9a6700,color:#24292f;

    class sources source;
    class capture,memory,ranking core;
    class explained,agent output;

Same flow in words:

StageWhat It Means
SourcesDocs, PDFs, notes, web pages, CSVs, tables, audio, video, and live systems enter the workspace.
CapturePraxis records where each source came from with IDs, hashes, metadata, and parse quality.
MemoryContent becomes archived evidence, graph changes, chunks, and embeddings.
RankingPraxis weighs relevance, trust, freshness, graph signals, entity hints, and conflicts.
Explained ContextThe agent gets context with source trails, priority breakdowns, and warnings.
Agent OutputClaude or another agent answers, reports, references, or starts a workflow.

The important part is the ranking step. Praxis does not treat retrieval as "nearest chunks only." It keeps context tied to source history, trust, freshness, graph state, entity hints, and conflict signals so an agent can use the result with more awareness.

See It Work

Install Praxis and run the Core demo:

git clone https://github.com/sparkplug604/praxis.git
cd praxis
python3 -m pip install -e .
praxis demo core

The demo ingests a bundled aggregate excerpt from the official Stack Overflow Developer Survey 2024/2025 archives, creates provisional graph memory, chunks it, embeds it locally, and runs an explained search. The bundled source contains aggregate CSVs plus a source manifest with URLs, dates, licenses, and checksums; it does not commit raw respondent rows.

The search step returns an explained result. Read it as:

QuestionWhat Praxis Shows
What matched?Stack Overflow Developer Survey AI Tooling Mini Dataset
Why did it rank?Strong semantic and keyword match, with graph context attached.
Can I inspect the source?Praxis reports source trust, chunk trust, freshness, active/deprecated status, and conflict penalties.
Are there warnings?This demo result reports no open conflicts.
Where did it come from?source_id: src:stackoverflow-dev-survey-ai-tooling-mini and a matching capture_id.
How was it ingested?The result includes intake metadata such as converter, media type, and parse quality.

The raw CLI output includes numeric scoring fields because downstream tools and tests can use them. The practical takeaway is simpler: Praxis shows why context ranked, where it came from, how fresh it is, how trusted it is, and whether conflicts are present.

If praxis is not recognized after installation, use Python's module form:

python3 -m praxis demo core

Windows PowerShell:

py -m pip install -e .
py -m praxis demo core

More setup help lives in Getting Started. If something fails on Windows, PATH, install, SQLite setup, search, or credentials, see Troubleshooting.

What Works Today

AreaStatus
Core source capture, ingest, chunking, local embeddings, hybrid searchWorks locally
Context-priority ranking and --explain outputWorks locally
SkillGraph changes, conflict ledger, dedupe, rollbackWorks locally
Relationship Evidence relationship extraction, review, and queryWorks locally
Skill/reference exportWorks locally
Reach fixture evidence and context packsWorks locally
Agency fixture demo and client capsulesWorks locally
HubSpot connectorExperimental
Google Ads connectorExperimental
Google Analytics / GA4 connectorExperimental
BigQuery connectorExperimental
Live writeback into source systemsNot supported
Hosted service / multi-user cloud appNot supported

Choose Your Path

If You Want To...Start HereStatus
Run a local demo and see explained retrieval.Getting StartedAvailable
Turn docs, research, notes, and files into searchable agent memory.Core PathAvailable
Understand why Core is more than chunk-and-vector retrieval.How Praxis Core Is DifferentAvailable
Try source-linked operational evidence and context packs without credentials.Reach PathExperimental
Evaluate repeatable multi-client workflows.Agency Evaluation GuideExperimental
Understand how Praxis fits with LangChain, LangSmith, and Langflow.LangChain Ecosystem FitAvailable
Review the full command surface.CLI ReferenceAvailable

How The Pieces Fit

Praxis has three related layers.

LayerWhat It Contributes
Praxis CoreLocal source memory: captures, chunks, embeddings, graph memory, conflict records, authority anchors, rollback, and skill/reference export.
Praxis ReachOperational evidence: read-only connector contracts, query manifests, evidence cards, freshness checks, warnings, and compact context packs.
Reach for AgenciesMulti-client context: per-client capsules with systems, field maps, metrics, permissions, evidence, context packs, and lifecycle state.

The goal is not to copy every system into Praxis. The goal is to let agents work from compact, source-linked context while systems of record stay where they are.

For the deeper architecture, read:

Repository Map

Praxis keeps source-controlled product files separate from generated local data.

PathPurpose
src/praxis/Python package and CLI implementation for Core, Reach, Agency, intake, search, governance, exports, and connectors.
docs/User guides, module docs, tutorials, connector setup notes, and architecture references.
examples/Small source-controlled examples. Generated demo output should not live here.
tests/Unit and CLI smoke tests for Core, Reach, Agency, intake, governance, and migration behavior.
adapters/Optional agent-runtime and framework bridge notes. Not required for first run.
scripts/Thin compatibility wrappers around the package CLI commands.
bootstrap/Source-controlled starter schemas and seed data used to initialize a fresh checkout.
workspace/Local generated runtime state: SQLite DBs, captures, vectors, evidence cards, context packs, client capsules, exports, notes, watchlists, and generated skills. Most files here are git-ignored.

Older checkouts may still have generated data in root-level folders such as db/, kg/, vectors/, research/, reach/, or agency/. Praxis prefers workspace/ now, but keeps temporary legacy fallback. Run this to inspect a safe migration:

praxis migrate-workspace --plan

Praxis CLI

The Praxis core is the Python package and CLI. Use praxis --help and praxis <command> --help for exact options.

Command GroupPurpose
setup, demo, doctor, evalGet started, run module demos, and verify the local workspace.
intakeInspect and convert sources before capture/ingest.
capture, ingest, scan, refreshBring source material into Praxis.
chunk, embed, search, graph, libraryIndex and retrieve knowledge.
changes, conflicts, dedupe, rollbackInspect, resolve, merge, or undo memory changes.
export-graph, export-skill-refsExport selected knowledge into references and skill-supporting files.
reachWork with operational evidence, query manifests, freshness, and context packs.
agencyManage client capsules and multi-client workflows.

Full command reference: docs/cli.md

Docs Map

NeedLink
Full docs route mapDocs Index
First install and demoGetting Started
Core learning pathCore Path
Reach learning pathReach Path
Agency learning pathAgency Path
Core module referencePraxis Core
Reach module referencePraxis Reach
Agency module referencePraxis Reach for Agencies
Evaluation guidanceEvaluators Index
LangChain ecosystem fitPraxis With LangChain, LangSmith, And Langflow

What Praxis Does Not Do Yet

Praxis is early-stage and intentionally local-first.

It is not a hosted service, not a production vector database, and not a full autonomous agent runtime. It does not automatically promote provisional graph updates into high-trust skills or policies, and it does not ship with private corpora or user-specific connectors.

Praxis Reach is also not a live CRM, ads-platform, analytics replacement, or warehouse. The current Reach module ships with mock and fixture connectors, plus experimental HubSpot, Google Ads, Google Analytics, and BigQuery connector classes. Real connectors should be read-only first, source-linked, permission-scoped, and designed so systems of record stay where they are.

Contributors

sparkplug604

20 commits

sparkplug604/praxis

Turn scattered knowledge, operational data, and history into source-linked context that your agents can inspect, explain, and reuse.

49

stars

20

commits

Python

primary language

Jun 17, 2026

updated

agentic-ai
agentic-rag
agent-memory
agent-skills
ai-agents
ai-workflows
context-engineering
developer-tools
hybrid-search
knowledge-graph
knowledge-management
llm
llmops
local-first
python
rag
retrieval-augmented-generation
semantic-search
skillgraph
sqlite

README

Praxis

Praxis gives AI agents shared organizational memory.

Most organizations have important knowledge spread across CRMs, documents, spreadsheets, analytics tools, support systems, meetings, internal notes, and historical decisions. An agent can be smart and still be blind if it only sees one pasted file, one stale export, or one narrow database.

Praxis turns scattered knowledge, operational data, and history into searchable, source-linked context that agents can inspect, explain, and reuse.

It is designed for teams whose work depends on context across disconnected systems: legal firms, managed service firms, healthcare organizations, security teams, product teams, enterprise marketing teams, agencies, consultants, and internal operations teams.

Praxis Core runs locally today. Praxis Reach and Reach for Agencies extend that model toward live operational systems and multi-client workflows. Praxis is not a hosted service, CRM, warehouse, BI tool, or autonomous agent runtime.

Why Praxis Exists

Claude, ChatGPT, and other agents can reason, write, summarize, and act. But they still need the right business memory.

If the answer depends on customer history, operational data, prior decisions, source documents, account notes, incident records, case files, or campaign results, the agent needs more than a prompt. It needs a way to find the right context, understand where it came from, notice when sources disagree, and keep useful knowledge available for the next task.

Praxis is that context layer.

Example questions Praxis is designed to support:

TeamA Question An Agent Might Need Context For
Agency or marketing teamWhich campaigns produced paying customers last quarter?
Legal firmWhat prior matters, research, filings, and client notes are relevant to this case?
Security teamWhat happened in similar incidents, and which response steps were used?
Product teamWhich customer complaints, roadmap decisions, support tickets, and release notes connect to this feature?
Managed service firmWhat does this client run, what changed recently, and what has broken before?
Healthcare or operations teamWhich policies, handoffs, reports, and historical decisions matter for this workflow?

What Makes Praxis Different

Praxis is not just a folder of documents and not just a vector search demo. It is built around the idea that agents should work from memory they can inspect.

A Normal RAG Setup Often...Praxis Adds...
Finds similar text chunks.Ranks context using relevance, source state, freshness, trust, graph signals, entity hints, and conflicts.
Gives an answer without enough trail.Keeps source IDs, capture IDs, hashes, parse quality, confidence, and metadata attached.
Treats all retrieved text like it is equally current.Tracks freshness, active/deprecated status, and source-level trust.
Hides contradictions inside the final answer.Can surface disagreements as warning lights instead of silently picking a winner.
Solves one query at a time.Lets reviewed knowledge become reusable references and agent-supporting files.
Struggles with boundaries between clients, accounts, or projects.Provides the foundation for scoped context capsules and multi-client workflows.

Put simply: Praxis helps an agent know what it knows, where it came from, whether it is still current, and when something looks disputed.

Read more: How Praxis Core Is Different, Retrieval Pipeline, and Conflicts And Dedupe.

How Sources Become Agent Context

flowchart LR
    sources["Sources<br/>docs, data, audio, video, live systems"]
    capture["Capture<br/>source IDs, hashes, metadata"]
    memory["Memory<br/>archive, graph, chunks, embeddings"]
    ranking["Context ranking<br/>trust, freshness, relevance, conflicts"]
    explained["Explained context<br/>source trail, warnings"]
    agent["Agent-ready output<br/>answer, report, workflow"]

    sources --> capture --> memory --> ranking --> explained --> agent

    classDef source fill:#f6f8fa,stroke:#8b949e,color:#24292f;
    classDef core fill:#eef6ff,stroke:#0969da,color:#24292f;
    classDef output fill:#fff8c5,stroke:#9a6700,color:#24292f;

    class sources source;
    class capture,memory,ranking core;
    class explained,agent output;

Same flow in words:

StageWhat It Means
SourcesDocs, PDFs, notes, web pages, CSVs, tables, audio, video, and live systems enter the workspace.
CapturePraxis records where each source came from with IDs, hashes, metadata, and parse quality.
MemoryContent becomes archived evidence, graph changes, chunks, and embeddings.
RankingPraxis weighs relevance, trust, freshness, graph signals, entity hints, and conflicts.
Explained ContextThe agent gets context with source trails, priority breakdowns, and warnings.
Agent OutputClaude or another agent answers, reports, references, or starts a workflow.

The important part is the ranking step. Praxis does not treat retrieval as "nearest chunks only." It keeps context tied to source history, trust, freshness, graph state, entity hints, and conflict signals so an agent can use the result with more awareness.

See It Work

Install Praxis and run the Core demo:

git clone https://github.com/sparkplug604/praxis.git
cd praxis
python3 -m pip install -e .
praxis demo core

The demo ingests a bundled aggregate excerpt from the official Stack Overflow Developer Survey 2024/2025 archives, creates provisional graph memory, chunks it, embeds it locally, and runs an explained search. The bundled source contains aggregate CSVs plus a source manifest with URLs, dates, licenses, and checksums; it does not commit raw respondent rows.

The search step returns an explained result. Read it as:

QuestionWhat Praxis Shows
What matched?Stack Overflow Developer Survey AI Tooling Mini Dataset
Why did it rank?Strong semantic and keyword match, with graph context attached.
Can I inspect the source?Praxis reports source trust, chunk trust, freshness, active/deprecated status, and conflict penalties.
Are there warnings?This demo result reports no open conflicts.
Where did it come from?source_id: src:stackoverflow-dev-survey-ai-tooling-mini and a matching capture_id.
How was it ingested?The result includes intake metadata such as converter, media type, and parse quality.

The raw CLI output includes numeric scoring fields because downstream tools and tests can use them. The practical takeaway is simpler: Praxis shows why context ranked, where it came from, how fresh it is, how trusted it is, and whether conflicts are present.

If praxis is not recognized after installation, use Python's module form:

python3 -m praxis demo core

Windows PowerShell:

py -m pip install -e .
py -m praxis demo core

More setup help lives in Getting Started. If something fails on Windows, PATH, install, SQLite setup, search, or credentials, see Troubleshooting.

What Works Today

AreaStatus
Core source capture, ingest, chunking, local embeddings, hybrid searchWorks locally
Context-priority ranking and --explain outputWorks locally
SkillGraph changes, conflict ledger, dedupe, rollbackWorks locally
Relationship Evidence relationship extraction, review, and queryWorks locally
Skill/reference exportWorks locally
Reach fixture evidence and context packsWorks locally
Agency fixture demo and client capsulesWorks locally
HubSpot connectorExperimental
Google Ads connectorExperimental
Google Analytics / GA4 connectorExperimental
BigQuery connectorExperimental
Live writeback into source systemsNot supported
Hosted service / multi-user cloud appNot supported

Choose Your Path

If You Want To...Start HereStatus
Run a local demo and see explained retrieval.Getting StartedAvailable
Turn docs, research, notes, and files into searchable agent memory.Core PathAvailable
Understand why Core is more than chunk-and-vector retrieval.How Praxis Core Is DifferentAvailable
Try source-linked operational evidence and context packs without credentials.Reach PathExperimental
Evaluate repeatable multi-client workflows.Agency Evaluation GuideExperimental
Understand how Praxis fits with LangChain, LangSmith, and Langflow.LangChain Ecosystem FitAvailable
Review the full command surface.CLI ReferenceAvailable

How The Pieces Fit

Praxis has three related layers.

LayerWhat It Contributes
Praxis CoreLocal source memory: captures, chunks, embeddings, graph memory, conflict records, authority anchors, rollback, and skill/reference export.
Praxis ReachOperational evidence: read-only connector contracts, query manifests, evidence cards, freshness checks, warnings, and compact context packs.
Reach for AgenciesMulti-client context: per-client capsules with systems, field maps, metrics, permissions, evidence, context packs, and lifecycle state.

The goal is not to copy every system into Praxis. The goal is to let agents work from compact, source-linked context while systems of record stay where they are.

For the deeper architecture, read:

Repository Map

Praxis keeps source-controlled product files separate from generated local data.

PathPurpose
src/praxis/Python package and CLI implementation for Core, Reach, Agency, intake, search, governance, exports, and connectors.
docs/User guides, module docs, tutorials, connector setup notes, and architecture references.
examples/Small source-controlled examples. Generated demo output should not live here.
tests/Unit and CLI smoke tests for Core, Reach, Agency, intake, governance, and migration behavior.
adapters/Optional agent-runtime and framework bridge notes. Not required for first run.
scripts/Thin compatibility wrappers around the package CLI commands.
bootstrap/Source-controlled starter schemas and seed data used to initialize a fresh checkout.
workspace/Local generated runtime state: SQLite DBs, captures, vectors, evidence cards, context packs, client capsules, exports, notes, watchlists, and generated skills. Most files here are git-ignored.

Older checkouts may still have generated data in root-level folders such as db/, kg/, vectors/, research/, reach/, or agency/. Praxis prefers workspace/ now, but keeps temporary legacy fallback. Run this to inspect a safe migration:

praxis migrate-workspace --plan

Praxis CLI

The Praxis core is the Python package and CLI. Use praxis --help and praxis <command> --help for exact options.

Command GroupPurpose
setup, demo, doctor, evalGet started, run module demos, and verify the local workspace.
intakeInspect and convert sources before capture/ingest.
capture, ingest, scan, refreshBring source material into Praxis.
chunk, embed, search, graph, libraryIndex and retrieve knowledge.
changes, conflicts, dedupe, rollbackInspect, resolve, merge, or undo memory changes.
export-graph, export-skill-refsExport selected knowledge into references and skill-supporting files.
reachWork with operational evidence, query manifests, freshness, and context packs.
agencyManage client capsules and multi-client workflows.

Full command reference: docs/cli.md

Docs Map

NeedLink
Full docs route mapDocs Index
First install and demoGetting Started
Core learning pathCore Path
Reach learning pathReach Path
Agency learning pathAgency Path
Core module referencePraxis Core
Reach module referencePraxis Reach
Agency module referencePraxis Reach for Agencies
Evaluation guidanceEvaluators Index
LangChain ecosystem fitPraxis With LangChain, LangSmith, And Langflow

What Praxis Does Not Do Yet

Praxis is early-stage and intentionally local-first.

It is not a hosted service, not a production vector database, and not a full autonomous agent runtime. It does not automatically promote provisional graph updates into high-trust skills or policies, and it does not ship with private corpora or user-specific connectors.

Praxis Reach is also not a live CRM, ads-platform, analytics replacement, or warehouse. The current Reach module ships with mock and fixture connectors, plus experimental HubSpot, Google Ads, Google Analytics, and BigQuery connector classes. Real connectors should be read-only first, source-linked, permission-scoped, and designed so systems of record stay where they are.

Contributors

sparkplug604

20 commits

Languages

Python

100.0%