{
  "markdown": "# Knos\n\n<!-- mcp-name: io.github.drexthealpha/knos -->\n\n[![Knos MCP server](https://glama.ai/mcp/servers/drexthealpha/Knos/badges/score.svg)](https://glama.ai/mcp/servers/drexthealpha/Knos)\n\n**One shared memory for every coding agent on your machine.** Two agents, or\ntwo people, change the same thing without knowing it. Knos is the record of\nwho is on what — and it **refuses to answer** about work somebody else has\ntaken, and **refuses the edit** before the write lands.\n\n## See it in one command\n\n```bash\npip install \"git+https://github.com/drexthealpha/Knos\"\nknos demo\n```\n\nFrom the repository: [PyPI](https://pypi.org/project/knos/) is the last cut\nrelease and trails `main`.\n\nNinety seconds on a throwaway repo it deletes afterwards. A claim, a second\nagent **refused**, an edit **blocked before the write**, a purchase that costs\nnothing the second time, a reversed decision **holding the work under it**, a\n**process that has never seen the repo** reading it all back with its own pid\nand the commit hash on screen — and then the store is deleted and you watch\nevery one of those stop.\n\nEvery line it prints is a real call into the real code. There is no hosted\nplayground and there will not be one: **nothing on the read path touches a\nnetwork**, and that is [a test](tests/test_no_network.py) rather than a\npromise. The local path is the playground.\n\n## Signals\n\n| | Knos |\n|---|---|\n| Listed in the MCP directory | **yes** — [awesome-mcp-servers#13480](https://github.com/punkpeye/awesome-mcp-servers/pull/13480), merged by the owner into a 94.5k-star index |\n| Code merged by third-party maintainers | **2** — [caura#1299](https://github.com/caura-ai/caura/pull/1299), [drt#1098](https://github.com/drt-hub/drt/pull/1098), which invited a second |\n| Open in real repositories | **6**, including [repomix#1837](https://github.com/yamadashy/repomix/pull/1837) (28k stars) |\n| Agents racing for one topic, real processes | **16**, **0** double-grants in 128 attempts; **15** when the memory is not shared — [`collide.json`](docs/evidence/collide.json) |\n| Onchain receipts that resolve | **11 of 11**, 8 on Base mainnet with USDC — `python scripts/verify_receipts.py` |\n| Hold length learned per agent | **29% less** time blocked on work nobody was doing — [`contention.json`](docs/evidence/contention.json) |\n| Ablation arms that die with the store | **12** |\n| Refusal that stops a filesystem write | **yes** — and renaming the file does not get past it, [`test_rename_bypass.py`](tests/test_rename_bypass.py) |\n| Retained users | **none.** [The full ledger](docs/PMF.md), including 34 pull requests that failed |\n\n## Three ways in, none of them a server\n\n**The Action** — zero install, never fails your build. It reads the\n`.knos/decisions.md` a contributor commits and comments on a pull request that\ntouches claimed work. Drop this in `.github/workflows/knos-claims.yml`:\n\n```yaml\non: [pull_request]\njobs:\n  claims:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - uses: drexthealpha/Knos/action@v0.1.8\n```\n\n**The library** — if you already ship a tool, import the claim instead of\nrunning ours. No MCP, no CLI, no daemon:\n\n```python\nfrom knos.core import Claims\n\nwith Claims(repo=\".\", who=\"my-agent\") as claims:\n    took, holder = claims.take(\"the parser\")\n    if not took:\n        print(f\"{holder['who']} has it\")\n```\n\n**The server** — `pip install knos && knos connect` puts it in front of Claude\nCode, Cursor, OpenCode and Claude Desktop, with three tools: `search`,\n`about`, `remember`.\n\n## What breaks when you delete it\n\nEverything. That is the point, and it is a test rather than a claim —\n`pytest tests/test_sibyl_is_load_bearing.py`.\n\nDelete `memory.db` and the withhold is gone, the edit is allowed, the paid\nanswer buys again, and the held decisions are released. There is no degraded\nmode — there is no product.\n\n## Check any of it yourself\n\n```bash\npython scripts/collide.py          # 16 processes, one topic, 0 double-grants\npython scripts/verify_receipts.py  # every onchain claim, resolved\npython scripts/ablation.py         # 12 arms\n```\n\nThe refusals themselves: `pytest tests/test_intent.py tests/test_guard.py\ntests/test_rename_bypass.py`. That the read path opens no socket:\n`pytest tests/test_no_network.py`.\n\n## Where everything else went\n\n| | |\n|---|---|\n| Scoring this | [`docs/JUDGE_GUIDE.md`](docs/JUDGE_GUIDE.md) — every claim mapped to the test that proves it |\n| How it works | [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md), [`docs/MEMORY_MODEL.md`](docs/MEMORY_MODEL.md) |\n| Proof and receipts | [`docs/VERIFICATION.md`](docs/VERIFICATION.md) |\n| Who wants this, and who has not | [`docs/PMF.md`](docs/PMF.md) |\n| The long version of this page | [`docs/GUIDE.md`](docs/GUIDE.md) |\n\n## The two onchain parts\n\nBoth optional, both off by default. Knos runs with them switched off and\nnothing on the read path touches a network.\n\n- **Base** — purchases settle over x402 in real USDC on mainnet, and the\n  receipt goes back into the store, so [the money gate](src/knos/gate.py)\n  reads a Base transaction hash to decide whether to spend again.\n- **Virtuals** — a Telegram bot that is also a registered ACP provider,\n  selling one answer out of this store.\n\nDetails and every hash: [`docs/VERIFICATION.md`](docs/VERIFICATION.md).\n\n## What it cannot do\n\nIt does not stop a determined person, and it is not access control. It knows\nwhat agents on **this machine** told it. It has **no retained users**. The\n[ledger](docs/PMF.md) says so plainly, including the 34 pull requests that\nwere the wrong idea.\n\n## Licence\n\nMIT. The name is a Greek root for a thing known.\n",
  "bytes": 5638,
  "sha": "d61d07ec7512473d5d149b6f5b4833673055174bbce6ac61415b960faee06161",
  "repo_slug": "drexthealpha/knos",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_drexthealpha_knos_cae21382/readme"
}