CLI tool for parsing .kgn/.kge files, ingesting them into a PostgreSQL knowledge graph DB, and generating AI agent context packages via subgraph queries
Project description
kgn
Manage your AI agent's knowledge — parse, store, query, and collaborate.
KGN is a developer-friendly CLI + MCP server for teams building with AI agents.
Write knowledge nodes in simple YAML+Markdown files (.kgn), define relationships
between them (.kge), and let KGN handle storage, similarity search, conflict
detection, and multi-agent task handoffs — all backed by PostgreSQL + pgvector.
Hybrid architecture: PostgreSQL is the local working engine; GitHub is the long-term source of truth. Export, commit, and push in one command.
Table of Contents
- Architecture
- Why KGN?
- Quick Start
- MCP Server (Claude Integration)
- Multi-Agent Orchestration
- CLI Commands
- File Formats
- Development
- Tech Stack
Architecture
For a deep dive into KGN's internal design — layer structure, module dependencies, database schema, data flows, and more — see the full Architecture Guide with 16 interactive Mermaid diagrams.
graph LR
A[".kgn / .kge"] --> B["Parser"]
B --> C["IngestService"]
C --> D[("PostgreSQL<br/>+ pgvector")]
D --> E["CLI · MCP · LSP · Web"]
E --> F["Git / GitHub Sync"]
Why KGN?
AI agents are powerful, but they forget everything between sessions — and when multiple agents collaborate, they can conflict, duplicate work, or lose track of decisions.
KGN gives your agents a shared, queryable memory:
| Problem | KGN Solution |
|---|---|
| Agents forget past decisions | Persistent knowledge graph in PostgreSQL |
| Duplicate work across agents | Conflict detection + similarity search |
| No task coordination | Built-in task queue with lease management |
| Hard to audit agent actions | Structured activity log per agent |
| Context window overflow | Subgraph extraction — only what's relevant |
IDE friction for .kgn files |
VS Code extension with LSP support |
Quick Start
📖 New to KGN? Follow the step-by-step Getting Started Guide ( 한국어 ) — no prior experience required.
Install
pip install kgn-mcp
Start Database
git clone https://github.com/baobab00/kgn.git && cd kgn
docker compose -f docker/docker-compose.yml up -d postgres
First Run
kgn init --project my-project
kgn ingest examples/ --project my-project --recursive
kgn status --project my-project
Embedding Provider Setup
To use embedding features, set your OpenAI API key in the .env file:
# .env
KGN_OPENAI_API_KEY=sk-your-api-key-here
KGN_OPENAI_EMBED_MODEL=text-embedding-3-small # default
If the API key is not set, ingest works normally and embedding is silently skipped (graceful degradation).
# Test provider connection
kgn embed provider test
Docker All-in-One
Run PostgreSQL + kgn CLI together with Docker:
docker compose -f docker/docker-compose.yml up -d --build
docker compose -f docker/docker-compose.yml exec kgn kgn init --project my-project
docker compose -f docker/docker-compose.yml exec kgn kgn --help
Place .kgn/.kge files in docker/workspace/ directory.
MCP Server (Claude Integration)
The MCP (Model Context Protocol) server enables Claude to directly read, write, and manage tasks in the knowledge graph.
# stdio mode (Claude Desktop / Claude Code default)
kgn mcp serve --project my-project
# HTTP SSE mode
KGN_MCP_TRANSPORT=sse KGN_MCP_PORT=8000 kgn mcp serve --project my-project
# streamable-http mode
KGN_MCP_TRANSPORT=streamable-http kgn mcp serve --project my-project
Claude Desktop integration — add to claude_desktop_config.json:
{
"mcpServers": {
"kgn": {
"command": "uv",
"args": ["run", "kgn", "mcp", "serve", "--project", "my-project"]
}
}
}
MCP Tools (12 tools)
| Tool | Category | Description |
|---|---|---|
get_node |
Read | Get node by ID |
query_nodes |
Read | Search nodes in project (type/status filter) |
get_subgraph |
Read | BFS subgraph extraction from node |
query_similar |
Read | Vector similarity Top-K search |
task_checkout |
Task | Check out highest-priority task (with auto lease recovery) |
task_complete |
Task | Mark task as complete (auto-unblocks dependent tasks) |
task_fail |
Task | Mark task as failed |
workflow_list |
Workflow | List registered workflow templates |
workflow_run |
Workflow | Execute a workflow template (creates subtask DAG) |
ingest_node |
Write | Ingest node from .kgn string |
ingest_edge |
Write | Ingest edge from .kge string |
enqueue_task |
Write | Enqueue TASK node |
Git/GitHub Sync
# Export DB → filesystem (+ auto-generate Mermaid README)
kgn sync export --project my-project --target ./sync
# Import filesystem → DB
kgn sync import --project my-project --source ./sync
# Push/pull to GitHub
kgn sync push --project my-project --target ./sync
kgn sync pull --project my-project --target ./sync
# Mermaid visualization
kgn graph mermaid --project my-project
kgn graph readme --project my-project --target ./sync
# Branch/PR management
kgn git branch list --target ./sync
kgn git pr create --project my-project --target ./sync --title "PR title"
Web Dashboard
pip install kgn-mcp[web]
kgn web serve --project my-project --port 8080
Open http://localhost:8080 — Graph View, Task Board, Health Dashboard, Search & Filter.
VS Code Extension
code --install-extension baobab00.vscode-kgn
pip install kgn-mcp[lsp] # for LSP features
Syntax Highlighting, Diagnostics, Auto-completion, Hover, Go to Definition, CodeLens, Subgraph Preview.
Error Code System
All MCP error responses are returned as structured JSON:
{
"error": "Error message",
"code": "KGN-300",
"detail": "Detailed description",
"recoverable": false
}
| Code | Category | Description | Retryable |
|---|---|---|---|
KGN-100 |
Infrastructure | Database connection failed | ✅ |
KGN-101 |
Infrastructure | Embedding provider unavailable | ✅ |
KGN-200 |
Ingest | YAML front matter parse error | ❌ |
KGN-201 |
Ingest | Required field missing | ❌ |
KGN-202 |
Ingest | Invalid field value | ❌ |
KGN-300 |
Query | Node not found | ❌ |
KGN-301 |
Query | Invalid UUID format | ❌ |
KGN-302 |
Query | Subgraph depth limit exceeded | ❌ |
KGN-400 |
Task | No READY tasks available | ❌ |
KGN-401 |
Task | Task not in expected state | ❌ |
KGN-402 |
Task | Lease expired | ✅ |
KGN-999 |
Internal | Unexpected server error | ✅ |
Multi-Agent Orchestration
KGN supports multi-agent collaborative workflows where multiple AI agents work together on a knowledge graph with role-based access control, task handoff, and conflict resolution.
- 5 Agent Roles — genesis, worker, reviewer, indexer, admin with role-based access control
- 3 Workflow Templates — design-to-impl, issue-resolution, knowledge-indexing
- Task Handoff — Automatic context propagation between workflow steps
- Advisory Locking — Prevents concurrent modifications to the same node
- Conflict Resolution — Detects conflicts and auto-creates review tasks
- Observability — Agent activity timeline, task flow stats, bottleneck detection
Agent Roles & Workflow Details
| Role | Create | Checkout | Description |
|---|---|---|---|
| genesis | GOAL, SPEC, ARCH, CONSTRAINT, ASSUMPTION | — | Project bootstrapping |
| worker | SPEC, ARCH, LOGIC, TASK, SUMMARY | ✅ (role-filtered) | Implementation work |
| reviewer | DECISION, ISSUE, SUMMARY | ✅ (role-filtered) | Code review & decisions |
| indexer | SUMMARY | — | Knowledge indexing |
| admin | All types | ✅ (all tasks) | Full access |
| Template | Steps | Description |
|---|---|---|
design-to-impl |
GOAL → SPEC → ARCH → TASK(impl) → TASK(review) | Full design-to-implementation pipeline |
issue-resolution |
ISSUE → TASK(fix) → TASK(verify) | Bug fix workflow |
knowledge-indexing |
GOAL → TASK(index) → TASK(review) | Knowledge capture pipeline |
kgn agent list --project my-project
kgn agent role --project my-project --agent-id <uuid> --role worker
kgn agent stats --project my-project --agent-id <uuid>
kgn agent timeline --project my-project --agent-id <uuid>
CLI Commands
Run
kgn --helpfor the full command list.
Key commands summary:
| Group | Example | Description |
|---|---|---|
| Core | kgn init, kgn ingest, kgn status, kgn health |
Initialize, ingest, status, health |
| Query | kgn query nodes, kgn query subgraph, kgn query similar |
Search, subgraph, similarity |
| Task | kgn task enqueue/checkout/complete/fail/list/log |
Task orchestration |
| Embed | kgn embed, kgn embed provider test |
Embedding management |
| Conflict | kgn conflict scan/approve/dismiss |
Conflict detection/management |
| Sync | kgn sync export/import/status/push/pull |
DB ↔ file ↔ GitHub sync |
| Git | kgn git init/status/diff/log/branch/pr |
Git/GitHub management |
| Graph | kgn graph mermaid/readme |
Mermaid visualization |
| MCP | kgn mcp serve |
MCP server (stdio/sse/streamable-http) |
| Agent | kgn agent list/role/stats/timeline |
Multi-agent orchestration |
| Web | kgn web serve |
Web visualization dashboard |
| LSP | kgn lsp serve |
Language Server (VS Code integration) |
Expired Task Recovery
When a checked-out task exceeds its lease_expires_at, it is considered expired.
requeue_expired resets expired IN_PROGRESS tasks to READY and increments attempts.
- MCP:
checkoutautomatically callsrequeue_expiredbeforehand - CLI: Manual invocation or cron schedule required
- When
max_attempts(default 3) is exceeded, the task transitions toFAILED
File Formats
.kgn — Knowledge Graph Node
---
kgn_version: "0.1"
id: "new:my-node" # UUID or new:slug
type: SPEC # GOAL, ARCH, SPEC, LOGIC, DECISION, ISSUE, TASK, CONSTRAINT, ASSUMPTION, SUMMARY
title: "Node title"
status: ACTIVE # ACTIVE, DEPRECATED, SUPERSEDED, ARCHIVED
project_id: "my-project"
agent_id: "my-agent"
tags: ["tag1", "tag2"]
confidence: 0.9
---
## Context
...
## Content
...
.kge — Edge Definition
---
kgn_version: "0.1"
project_id: "my-project"
agent_id: "my-agent"
edges:
- from: "new:node-a"
to: "new:node-b"
type: DEPENDS_ON # DEPENDS_ON, IMPLEMENTS, RESOLVES, SUPERSEDES, DERIVED_FROM, CONTRADICTS, CONSTRAINED_BY
note: "Edge description"
---
See examples/ directory for practical .kgn and .kge file examples.
Development
# Lint
uv run ruff check .
# Format
uv run ruff format .
# Test
uv run pytest --tb=short -q
# Coverage
uv run pytest --cov=kgn --cov-report=term-missing
Tech Stack
| Layer | Technology |
|---|---|
| Language | Python 3.12+ |
| CLI | Typer + Rich |
| DB | PostgreSQL 16 + pgvector |
| ORM/SQL | psycopg3 (native async-ready) |
| Validation | Pydantic v2 |
| AI Protocol | MCP 1.26.0 via FastMCP |
| Embeddings | OpenAI text-embedding-3-small (optional) |
| Git/GitHub | bidirectional sync (DB \u2194 GitHub) |
| Logging | structlog (JSON / console) |
| Web | FastAPI + Uvicorn + Jinja2 + Cytoscape.js (optional extra) |
| IDE | VS Code extension + pygls LSP (optional extra) |
| Infra | Docker Compose + GitHub Actions CI |
| Quality | ruff + pytest (2031 tests, 93%+ coverage) |
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file kgn_mcp-0.11.3.tar.gz.
File metadata
- Download URL: kgn_mcp-0.11.3.tar.gz
- Upload date:
- Size: 493.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4520bf45936756b69ba62ac8323e0e1370c259401aaac8121a1f999cb46665cf
|
|
| MD5 |
a5c477114366fd102e20a525749e572d
|
|
| BLAKE2b-256 |
db8503af48aca5c642349aedbc6ae00b7bf53028e52de1d9a76dd810a9cb03f0
|
Provenance
The following attestation bundles were made for kgn_mcp-0.11.3.tar.gz:
Publisher:
publish.yml on baobab00/kgn
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
kgn_mcp-0.11.3.tar.gz -
Subject digest:
4520bf45936756b69ba62ac8323e0e1370c259401aaac8121a1f999cb46665cf - Sigstore transparency entry: 1053236879
- Sigstore integration time:
-
Permalink:
baobab00/kgn@4b358e03dbbf4b20fb8186a9999006a0503666b9 -
Branch / Tag:
refs/tags/v0.11.3 - Owner: https://github.com/baobab00
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@4b358e03dbbf4b20fb8186a9999006a0503666b9 -
Trigger Event:
release
-
Statement type:
File details
Details for the file kgn_mcp-0.11.3-py3-none-any.whl.
File metadata
- Download URL: kgn_mcp-0.11.3-py3-none-any.whl
- Upload date:
- Size: 228.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ff278cba8937149b40be1a46fb04070876aecbd2f52ab6cc2d1c6db966074bdc
|
|
| MD5 |
c3213efa99523e4b85723426e4afe76f
|
|
| BLAKE2b-256 |
da808af1d7842d7fa9898ce48c8221d6289817bf6eccc78ceb8b0589d386d6f2
|
Provenance
The following attestation bundles were made for kgn_mcp-0.11.3-py3-none-any.whl:
Publisher:
publish.yml on baobab00/kgn
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
kgn_mcp-0.11.3-py3-none-any.whl -
Subject digest:
ff278cba8937149b40be1a46fb04070876aecbd2f52ab6cc2d1c6db966074bdc - Sigstore transparency entry: 1053236944
- Sigstore integration time:
-
Permalink:
baobab00/kgn@4b358e03dbbf4b20fb8186a9999006a0503666b9 -
Branch / Tag:
refs/tags/v0.11.3 - Owner: https://github.com/baobab00
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@4b358e03dbbf4b20fb8186a9999006a0503666b9 -
Trigger Event:
release
-
Statement type: