MCP governance server in Go for the Agentic Wiki — knowledge that composes, not that you query
- ✓Open-source license (Apache-2.0)
- ✓Actively maintained (<30d)
- ✓Clear description
- ✓Topics declared
- ✓Documented (README)
- !Install pipes a remote script into a shell (curl | sh)
git clone https://github.com/BeppeTemp/cartographer && cp cartographer/*.md ~/.claude/agents/Resumen de Subagents
```
██████╗ █████╗ ██████╗ ████████╗ ██████╗ ██████╗ ██████╗ █████╗ ██████╗ ██╗ ██╗███████╗██████╗
██╔════╝██╔══██╗██╔══██╗╚══██╔══╝██╔═══██╗██╔════╝ ██╔══██╗██╔══██╗██╔══██╗██║ ██║██╔════╝██╔══██╗
██║ ███████║██████╔╝ ██║ ██║ ██║██║ ███╗██████╔╝███████║██████╔╝███████║█████╗ ██████╔╝
██║ ██╔══██║██╔══██╗ ██║ ██║ ██║██║ ██║██╔══██╗██╔══██║██╔═══╝ ██╔══██║██╔══╝ ██╔══██╗
╚██████╗██║ ██║██║ ██║ ██║ ╚██████╔╝╚██████╔╝██║ ██║██║ ██║██║ ██║ ██║███████╗██║ ██║
╚═════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
```
> MCP governance server in **Go** for the *Agentic Wiki* — knowledge that **composes**, not that you query.
[](https://github.com/BeppeTemp/cartographer/actions/workflows/ci.yml)
[](https://github.com/BeppeTemp/cartographer/releases)
[](https://goreportcard.com/report/github.com/BeppeTemp/cartographer)
[](LICENSE)
[](https://go.dev/)
[]()
> [!WARNING]
> **Beta software.** Cartographer is pre-1.0: the MCP tool surface, CLI and
> configuration may change between minor releases without a deprecation
> period. Breaking changes bump the **minor** version (0.x semantics) and are
> called out in the [changelog](CHANGELOG.md). Expect rough edges — bug
> reports are very welcome.
LLM agents forget everything between sessions, and stateless RAG only bolts retrieval onto that
amnesia. The alternative is a knowledge base the agent itself **builds and maintains over time** —
but letting an agent loose on a folder of files ends in broken links, lost history, and silent
corruption. **Cartographer** is the governance layer that makes the pattern safe: the agent works
the wiki exclusively through MCP tools, and the server enforces every invariant — validation,
linking, immutability gates, one git commit per write.

## What is it
**Cartographer** implements the _Agentic Wiki_: a persistent knowledge base of interlinked
Markdown files that an LLM agent grows and curates by talking to the server over the MCP
protocol. The agent **never touches the files directly**.
The wiki is grounded in **Karpathy's "LLM Wiki" pattern** (operating model: knowledge accretes
over time, it is not stateless RAG) on top of the **OKF** substrate (Open Knowledge Format v0.1 by
Google Cloud) — each KB is a folder of `.md` files with YAML frontmatter, self-contained and
version-controlled with git. Zero lock-in: the wiki is readable by any tool, including Obsidian and
any text editor.
Cartographer offers **two complementary profiles**:
- **Local Core** — single agent, stdio transport, local git. Captures the value of the pattern with
minimal complexity.
- **Server** — multi-KB, HTTP + token auth. One server holds several knowledge bases, hands each
client the artifacts its KBs define, and lets a team share some KBs while keeping others private.
Two consequences are worth stating on their own, because they are what most of the design is for:
the KB **configures the agents that read it** across every client you use, and it does that for a
whole team rather than a single laptop.
## One KB, every agent
A knowledge base is not only what an agent reads — it is also **how that agent is set up to work**.
Cartographer treats skills, subagents, hooks and standing instructions as content of the KB, and
materializes them into each client's native format.
The manual alternative is what most setups do today: the same skill hand-copied into
`.claude/skills/`, `.opencode/skills/` and `.codex/skills/`, each drifting on its own, each config
file edited by hand for every MCP endpoint. Change one thing and you change it in five places, on
every machine, forever.
```bash
cartographer connect # detects installed clients and configures all of them
```
That single command writes, per client and in the format that client expects:
| | claude | opencode | codex | kiro | hermes |
|---|---|---|---|---|---|
| **MCP endpoint** | `.claude.json` | `opencode.json` | `config.toml` block | `.kiro/settings/mcp.json` | *rendered by its own deploy* |
| **Skills** | `.claude/skills/` | `.opencode/skills/` | `.codex/skills/` | `.kiro/skills/` | delivered to its inbox |
| **Subagents** | `.claude/agents/*.md` | `.opencode/agent/*.md` | `.codex/agents/*.toml` | — | — |
| **Hooks** | `settings.json` | generated JS plugin | `config.toml` block | — | — |
| **Instructions** | block in `CLAUDE.md` | block in `AGENTS.md` | block in `AGENTS.md` | `.kiro/steering/` | — |
Subagents and hooks are **translated**, not copied: the same KB artifact becomes a Markdown agent
for Claude Code, a TOML one for Codex, and a generated JavaScript plugin where a hook has no native
equivalent. Cells that cannot exist are `unsupported` by explicit declaration, never by silent
omission — and a cell missing from the table fails a test.
What keeps it true after the first run:
- **it re-syncs by itself** — a `SessionStart` hook on every client that has one, a scheduled timer
for those that don't;
- **it verifies the files on disk**, not just its own bookkeeping: an artifact edited by hand or
deleted is restored from the server;
- **every materialized file carries a provenance stamp** saying which KB it came from and where to
edit it for real;
- **it only ever touches what it created** — pruning is limited to its own tracked paths, and
`--dry-run` shows the plan without writing;
- **`doctor`** diagnoses residues and drift read-only; **`reconnect`** rebuilds a client from
scratch while preserving every setting.
Edit a skill once in the KB, and every client of every machine converges on it.
## Teams
The same mechanism is what makes Cartographer work for more than one person. A server mounts
several KBs and routes by `?kb=<name>`, so colleagues can each keep a private knowledge base while
sharing others.
- **Per-KB authorization** — bearer tokens carry `kb:<name>:r` or `kb:<name>:rw` scopes. **Roles**
([`docs/transport-auth.md`](docs/transport-auth.md)) narrow that further to specific maps, journals
and concept types, so a teammate can be an editor of the runbooks and a reader of everything else.
Rules are unioned: adding a role can only widen access, never silently revoke it.
- **Git is the sync layer** — every write is a commit, with fetch/pull-rebase before and push after,
so teammates running their own server against **separate clones of the same remote** converge
without a coordination protocol. A conflict is then not an error page but a workflow: the affected
concepts are flagged `degraded`, `conflicts_list` enumerates them, and a bundled skill walks an
agent through resolving them. (One process is the sole writer of a given working copy; pointing
two writers at one checkout is not a supported model — partition KBs across instances instead, see
[`docs/concurrency.md`](docs/concurrency.md).)
- **Shared content stays portable** — a skill that mentions a local repository uses a
`{{repo:<name>}}` placeholder resolved **on each client** from its own git remotes, so the same
artifact works on every teammate's machine without machine-specific paths leaking into the KB. A
server-side lint flags the ones that do.
- **Provenance you can verify** — a KB can sign its provisioning artifacts with Ed25519; clients pin
the public key out of band and refuse anything that fails verification. Distributing a skill to a
team is then a checkable act, not a matter of trust.
- **Per-KB identity** — commit author and an optional tool-name prefix are configured per KB, so
history attributes correctly and an agent mounting several KBs never confuses their tools.
## Key features
- 🔧 **Full MCP tool suite** — complete list in [`docs/control-plane.md`](docs/control-plane.md)
- 📖 **Read & navigation** — `atlas_overview`, `index_get`, `concept_read`, `map_list`,
`graph_neighbors` (outbound links or backlinks) and `concept_list` (scoped frontmatter facets)
- 🔍 **Search** — keyword: a pure-Go inverted index, or SQLite FTS5 with a trigram tokenizer when the KB has a persisted index
- ✍️ **Validated writes** with optimistic concurrency (`if_match` / content-hash), including `concept_new` from KB-owned templates discovered through `template_list`, `index_patch` for curating root/Map/Journal `index.md` entries with the same bounded `concept_patch` semantics, and `concept_batch` for atomic multi-concept writes/patches across a large refactor (one commit, full rollback on any failure)
- 📎 **Concept assets** — read, write, list, and delete binary or text dossier files inside expanded concepts
- 🛡️ **Governance** — deterministic `lint` (broken link, stale claim, orphan, map contracts), `commit_gate`,
`gate_check`, `supersede`, contradiction tracking
- 🧬 **Transactional git** — one commit per write operation; optional synchronization to a remote
(fetch/pull-rebase before and push after every write), which is also what lets several instances
serve one KB — see [Teams](#teams)
- 🔐 **Audit log** — append-only with hash-chain and Ed25519 signature
- 🧩 **Domain skills** (`SKILL.md` / agentskills.io format), including executable scripts and binary
assets — see [One KB, every agent](#one-kb-every-agent) for how they reach each client
- 🔑 **Secrets via SOPS** — JSON Pointer references, scoped resolution and safe rotation; plaintext values never stored
- 📦 **OKF-compliant** — each KB is an OKF bundle and a standalone git repo, zero lock-in (just git +
Markdown)
## Architecture
Cartographer separates a **data plane** Lo que la gente pregunta sobre cartographer
¿Qué es BeppeTemp/cartographer?
+
BeppeTemp/cartographer es subagents para el ecosistema de Claude AI. MCP governance server in Go for the Agentic Wiki — knowledge that composes, not that you query Tiene 17 estrellas en GitHub y su última actualización registrada es del 2026-09-08.
¿Cómo se instala cartographer?
+
Puedes instalar cartographer clonando el repositorio (https://github.com/BeppeTemp/cartographer) o siguiendo las instrucciones del README en GitHub. ClaudeWave también te ofrece bloques de instalación rápida en esta misma página.
¿Es seguro usar BeppeTemp/cartographer?
+
Nuestro agente de seguridad ha analizado BeppeTemp/cartographer y le ha asignado un Trust Score de 87/100 (tier: Trusted). Revisa el desglose completo de comprobaciones superadas y flags en esta página.
¿Quién mantiene BeppeTemp/cartographer?
+
BeppeTemp/cartographer es mantenido por BeppeTemp. La última actividad registrada en GitHub es del 2026-09-08, con 1 issues abiertos.
¿Hay alternativas a cartographer?
+
Sí. En ClaudeWave puedes explorar subagents similares en /categories/agents, ordenados por popularidad o actividad reciente.
Despliega cartographer en tu cloud
Lleva este repo a producción en minutos. Cada plataforma genera su propio entorno con variables de entorno editables.
¿Mantienes este repo? Añade un badge a tu README
Pega el badge en tu README de GitHub para mostrar que está auditado por ClaudeWave. Cada badge enlaza de vuelta a esta página y muestra el Trust Score actual.
[](https://claudewave.com/repo/beppetemp-cartographer)<a href="https://claudewave.com/repo/beppetemp-cartographer"><img src="https://claudewave.com/api/badge/beppetemp-cartographer" alt="Featured on ClaudeWave: BeppeTemp/cartographer" width="320" height="64" /></a>Más Subagents
The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.
The agent that grows with you
Java 面试 & 后端通用面试指南,覆盖计算机基础、数据库、分布式、高并发、系统设计与 AI 应用开发
Build Agentic workflows, RAG pipelines, with rich AI model and tool support on one collaborative workspace. Deploy on cloud, VPC, or self-hosted, so teams move from prototype to production without rebuilding the stack.
The agent engineering platform.
Makes your AI agent think like the laziest senior dev in the room. The best code is the code you never wrote.