For teams running agent fleetsOpen source
Context management for software factories.
Your agents can reach everything and can't tell what's true. ctxpipe turns it into one organised, current, inspectable repo that the whole fleet reads over MCP.
Pick the repos and tools each Workspace reads. Scope changes by pull request.
Connectors
Connectors
Connect external tools and choose what content ctxpipe should ingest.
- GitHubSyncing
- Used in
- Payments · 1 team
- Account
- acme
- Scope
- .ctxpipe/sources.yaml · teams: [PAY]
- LinearSyncing
- Used in
- Payments · 1 team
- Account
- Acme
- Scope
- .ctxpipe/sources.yaml · teams: [PAY]
- NotionSyncing
- Used in
- Payments · 1 team
- Account
- Acme HQ
- Scope
- .ctxpipe/sources.yaml · teams: [PAY]
- ConfluenceSyncing
- Used in
- Payments · 1 team
- Account
- acme.atlassian.net
- Scope
- .ctxpipe/sources.yaml · teams: [PAY]
- SlackSyncing
- Used in
- Payments · 1 team
- Account
- Acme
- Scope
- .ctxpipe/sources.yaml · teams: [PAY]
- PagerDutySyncing
- Used in
- Payments · 1 team
- Account
- acme
- Scope
- .ctxpipe/sources.yaml · teams: [PAY]
Your agents can reach everything. That's the problem.
Every repo, ticket, doc, incident and Slack thread is one MCP call away. So agents read too much, trust the wrong parts, and you can't see why. More context hasn't made the fleet better. It's made it noisier.
- Too muchThousands of files, tickets and threads. The context window fills with reading, not work.
- Too noisyStale runbooks, duplicate docs and contradicting decisions all look equally true.
- UnorganisedSpread across Linear, Notion, Slack and dozens of repos, with nothing linking a decision to its code.
- OpaqueWhen an agent gets it wrong, you can't see what it read or why it believed it.
- confluencePayments retries (2021)stale
- notionRetry guidelines (draft copy)duplicate
- slack#payments-oncall: “just bump retries to 5?”contradicts
- linearPAY-212 Retry storm on captureunlinked
- codecapture/retry.ts before #418contradicts
- githubPR #391 Retry capture 3x (reverted)stale
- confluenceRetry policy v2 (copy)duplicate
- adrADR-019 Idempotency keys for capturecurrent
- + 39 more
Write it down once. Keep it current. Serve it to every agent.
How ctxpipe works, in four steps.
- 01 · Connect
Agents read your decisions, not just your code.
Link your repos and pull in engineering context from Linear, Notion, PagerDuty and more. ctxpipe writes it to one git repo as Markdown, linked back to the code.
- Code, tickets, docs, incidents
- Markdown in your git
- A Workspace per team or product
capture-retries.md- .agents
- .ctxpipe
- github
- knowledge
- decisions
- adr-019-idempotency-keys.md
- patterns
- capture-retries.md
- services
- ledger.md
- payments-service.md
- refunds.md
- linear
- pagerduty
- repositories
- slack
- AGENTS.md
capture-retries.md---kind: Patternclaims:- to: ../services/payments-service.mdpredicate: PART_OFconfidence: 0.85valid_from: 2026-10-13- to: ../decisions/adr-019-idempotency-keys.mdpredicate: LINKS_TO---# Payment capture retriesCapture retries twice with an idempotency key(ADR-019, shipped in PR #418).Before Oct 13: 3 attempts, exponential backoff.The 2021 runbook (5 fixed attempts) is stale. - 02 · Keep current
Agents stop acting on stale docs.
Every push to a linked repo is re-read. Each fact links back to where it came from, and expires when the code stops backing it. Every change is a commit you can revert.
- One job, one commit
- Contradiction flags
GraphNodes 348 · Edges 579 · Updated Oct 13
- 03 · Curate
Fix what's wrong the way you fix code.
Ask Workspace chat to correct or add knowledge. It works in its own sandbox, on its own branch, and nothing reaches main until you merge the pull request. It's your repo, so your own agents can edit it too.
- A sandbox per conversation
- Changes by pull request
- Plain git
Refund retrieschat/1Refunds should reuse the same idempotency middleware.
Write that down for refunds and mark the runbook as superseded.
2 changed files+12−1Open diff- knowledge/services/refunds.md
- knowledge/decisions/adr-019-idempotency-keys.md
ctxpipe pushed 2 files to ctxpipe/chat/refund-retries/1 and opened PR #57
Continue the conversation…
- 04 · Serve
Every agent starts from the same facts.
Claude Code, Cursor, Codex and OpenCode search the same Workspace over MCP: knowledge, code and graph. ctxpipe returns sources, not answers. Your agent reasons with its own model and cites them.
- npx ctxpipe init
- 7 read-only tools
- Any MCP client
- Claude Code
- Cursor
- Codex
- VS Code
OpenCode
Refund retrieschat/1We're adding retries to refunds. What's our pattern for payment capture, and is the runbook still right?
Read 4 files2 searches
- Searchcapture retry
- Read fileknowledge/patterns/capture-retries.md
- Read fileknowledge/decisions/adr-019-idempotency-keys.md
- Searchrunbook retries 2021
- Read filegithub/pulls/acme/payments-service/418.md
- Read filepayments-service/src/capture/retry.ts
Capture retries twice with an idempotency key. That's ADR-019, shipped in PR #418 on Oct 13.
The 2021 runbook says 5 fixed attempts. The code no longer does that, so treat it as stale.
Refunds should reuse the same idempotency middleware.
Source: knowledge/patterns/capture-retries.md
Continue the conversation…
✻ Claude Code~/acme/payments-servicectxpipe>
parallel⏺ ctxpipe - search_knowledge (MCP)(query: "retry policy for payment capture")
capture-retries.mdknowledge/patterns/capture-retries.md L12–18
adr-019-idempotency-keys.mdknowledge/decisions/adr-019-idempotency-keys.md L1–9
⏺ ctxpipe - search_code (MCP)(pattern: "withIdempotency(")
ledger · post.tsacme/ledger · src/post.ts :88
checkout-web · capture.tsacme/checkout-web · src/capture.ts :41
⏺ ctxpipe - read_file (MCP)(ref: "knowledge/patterns/capture-retries.md", lines: "12-18")
7 lines · main @ a41f9c2
⏺ ctxpipe - get_related (MCP)(ref: "knowledge/patterns/capture-retries.md")
ADR-019 decided it · PR #418 shipped it · 2021 runbook superseded
⏺
↳ cites capture-retries.md:12 · adr-019 · ledger/src/post.ts:88
Your factory changes fast. Your sources are a mess. Context is the layer in between.
Building is cheap now, and harnesses get replaced every quarter. What carries over is what your org knows. ctxpipe keeps it organised and current from your code, tickets and docs, and serves it to whatever factory you run this year.
Swap the harness or the model. The context stays.
Nothing your agents read is hidden from you.
It's open source
The core is MIT licensed, including every job that writes to your Workspace. Read it, run it or fork it.
- ctxpipe-ai/ctxpipe
- public
- licence
- MIT
- language
- TypeScript
- self-host
- Docker Compose · Terraform · AWS CDK
Context is files in a repo
Every fact your agents read is a Markdown file in a git repo you own. Open it in any editor or point any tool at it.
knowledge/patterns/capture-retries.md
---
kind: Pattern
claims:
- to: ../decisions/adr-019-idempotency-keys.md
predicate: LINKS_TO
valid_from: 2026-10-13
---
# Payment capture retriesHistory is git
Every change is a commit you can read, blame or revert. Jobs commit small and often; chat edits arrive as pull requests.
- botctxpipe - Knowledge update of payments-service from extract_ingesta41f9c2
- botctxpipe - Knowledge update of payments-knowledge from claims_upgradeb30d7c4
- botctxpipe - Knowledge update of github from PR #4189f4e21b
- botctxpipe - Knowledge update of slack from #payments-oncalle7c0d3a
What your team will ask.
How do we deploy it?
What does early access involve?
Do we need GitHub?
Why join the community?
How is this different from Graphify and other code-graph tools?
Graphify maps one folder of code into a graph you regenerate. ctxpipe keeps a team's knowledge across many repos, plus the tickets, docs, incidents and PRs behind it, as Markdown in a git repo you own. It updates on every push, every change is a commit you can review, and the graph is a view you can rebuild, not the source of truth. Cross-repo and connectors are in the MIT core, not a paid tier.
Hosted context engines answer from an index you can't read, diff or take with you. With ctxpipe you keep the corpus itself. Where code-graph tools are stronger: symbol-level navigation (callers, references) and a one-command local setup.
How is this different from RAG over our docs?
Do we still need AGENTS.md files?
Does ctxpipe write to our code repos?
Do you train on our code?
Does ctxpipe call a model when our agents query it?
What happens if we stop using ctxpipe?
Give every agent the same context.
Hosted ctxpipe is in early access, with onboarding from the team that builds it.
or self-host from GitHub