Skip to main content

FixDoc

Your agents stop repeating incidents.

FixDoc is an incident knowledge store your AI agents query over MCP. Validated fixes, playbooks, and environment insights go in; ranked, token-budgeted context comes out. Knowledge lives as markdown files in a git repo you own — delete FixDoc any time and everything stays readable.

Five-minute start

uv tool install "fixdoc[embed]"      # or: pipx install "fixdoc[embed]"
cd your-infra-repo
fixdoc init                          # scaffold + MCP config + agent instructions

Open your agent (Claude Code, Cursor, any MCP client), approve the fixdoc server once, and hit an infrastructure error: the agent checks the knowledge base before debugging from scratch.

Seed the knowledge base (day 0)

Two moves take a new store from empty to useful:

1. The interview — highest value first. Open your agent in the repo and say: "interview me: ten facts about our environment every new engineer learns the hard way, plus our five worst incidents — record each one." The agent asks the questions and writes the entries; you review the quarantine afterwards.

2. Import the documents you already have:

fixdoc ingest ./runbooks ./postmortems
  • Markdown documents with a resolution-type section (Fix, Mitigation, Resolution, Remediation, Workaround, ...) become quarantined entries. Sections map by heading: Summary/Impact → Symptom, Root Cause → Root cause, Verification → Verification. Docs with three or more numbered steps become playbooks automatically.
  • Anything a document never stated becomes a visible "(add during review)" placeholder — nothing is invented. Documents with no resolution content are skipped: they're notes, not knowledge.
  • Secrets are redacted before anything is written (AWS keys, private-key blocks, JWTs, bearer tokens, password=-style values) — the store is a git repo you'll push, so nothing sensitive may enter it.
  • Volume is capped: --limit (default 200, max 1000) keeps the highest-substance candidates; re-run after reviewing a batch to drain the next wave (re-runs never duplicate). --dry-run previews without writing.
  • Logs are deliberately not ingested: errors carry no remediation. Knowledge comes from documents, threads, and people.

Then review each new entry — fill the placeholders, change status: quarantined to status: validated (normally via pull request) — and it becomes retrievable.

How it works

Four MCP tools are the entire agent surface:

Tool What it does
search_fixes Validated knowledge for a symptom, ranked by relevance and proof
record_fix Write a new fix — it lands in quarantine for human review
confirm_fix Report that a retrieved fix worked (raises its trust)
get_fix Fetch one entry in full by id

Everything an agent writes starts quarantined and is invisible to retrieval until a human promotes it to validated — normally a pull request review. There is no delete or admin tool by design.

The store

.fixdoc/config.yaml      # spec_version, embedding model
knowledge/
  <namespace>/           # per-team dirs; CODEOWNERS decides who validates what
    fx_7c2a91e4.md       # one entry per file, filename = id
.fixdoc-index/           # derived (SQLite + embeddings), gitignored, rebuildable

Entries are YAML frontmatter + markdown sections (Symptom / Root cause / Fix / Verification). Search embeds the symptom; results return the fix. Embeddings run fully local (bge-small-en-v1.5 via fastembed) — no account, no network call in the query path.

Where things stand (v0.1.0)

Working and verified today: the four MCP tools end to end with a live agent, semantic retrieval with trust-weighted ranking and token budgets, the quarantine write path with dedup, the events log, local embeddings, and fixdoc init. Next up, in order: day-0 ingestion (feed logs and postmortems in, get a classified, secret-redacted, quarantined store out), Slack/Jira/ ServiceNow/Notion importers, the ops surface (status, promote, doctor), and the eval harness.

Developing

make setup      # venv + editable install (dev + embed)
make test       # unit suite
make e2e        # end-to-end with real embeddings
make lint fmt

Design docs live in docs/specs/. The engine is src/fixdoc/core/ (models, dedup, index, retrieval, record, events); the MCP server is src/fixdoc/mcp_server.py.

License

MIT

Metadata

Release files for fixdoc 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fixdoc 0.1.0
File Size Uploaded Provenance Actions
fixdoc-0.1.0.tar.gz 43.6 kB Without provenance Details for fixdoc-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for fixdoc 0.1.0
File Interpreter ABI Platform Actions
fixdoc-0.1.0-py3-none-any.whl Python 3 none any Details for fixdoc-0.1.0-py3-none-any.whl

Total release size: 78.3 kB

Release files / fixdoc-0.1.0.tar.gz

Download URL fixdoc-0.1.0.tar.gz
Size 43.6 kB
Tags Source
SHA-256 checksum
How to use checksums
be689a6a809ebc00313be1a7e4acdbca51a1c1c0b00983ea088fef83ffe71b0a
BLAKE2b-256 checksum
How to use checksums
971a70310a34bd9692b0f1435391443c77eb98a5f9e66873e4ef0b32aac1bf2a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

Release files / fixdoc-0.1.0-py3-none-any.whl

Download URL fixdoc-0.1.0-py3-none-any.whl
Size 34.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d3e5e329fa68dcbf0757237c269715fdf9b1a4fe4959e4105bd1974cb03a7149
BLAKE2b-256 checksum
How to use checksums
9f3354dda8422a0c1e902524df87b54ab814de2b7f9f0b06f8fa58419c6cf83b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

Security for fixdoc 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page