{"id":50726967,"url":"https://github.com/sean35mm/weaver","last_synced_at":"2026-06-10T05:00:51.896Z","repository":{"id":361876205,"uuid":"1256225543","full_name":"sean35mm/weaver","owner":"sean35mm","description":"Shared situational awareness for multiple coding agents working in the same repo","archived":false,"fork":false,"pushed_at":"2026-06-08T22:32:20.000Z","size":255,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-09T00:19:47.722Z","etag":null,"topics":["ai-agents","claude-code","cli","coding-agents","developer-tools","opencode"],"latest_commit_sha":null,"homepage":"https://sean35mm.github.io/weaver/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sean35mm.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-06-01T15:20:08.000Z","updated_at":"2026-06-08T22:32:06.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/sean35mm/weaver","commit_stats":null,"previous_names":["sean35mm/weaver"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/sean35mm/weaver","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sean35mm%2Fweaver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sean35mm%2Fweaver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sean35mm%2Fweaver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sean35mm%2Fweaver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sean35mm","download_url":"https://codeload.github.com/sean35mm/weaver/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sean35mm%2Fweaver/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34137570,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-10T02:00:07.152Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-agents","claude-code","cli","coding-agents","developer-tools","opencode"],"created_at":"2026-06-10T05:00:31.484Z","updated_at":"2026-06-10T05:00:51.884Z","avatar_url":"https://github.com/sean35mm.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Weaver\n\n\u003e **Your agents, finally in sync.**\n\u003e Shared situational awareness for multiple coding agents working in the same repo.\n\n[![CI](https://github.com/sean35mm/weaver/actions/workflows/ci.yml/badge.svg)](https://github.com/sean35mm/weaver/actions/workflows/ci.yml)\n[![License: MIT](https://img.shields.io/github/license/sean35mm/weaver)](./LICENSE)\n\n**Docs:** \u003chttps://sean35mm.github.io/weaver/\u003e · **For agents:** [`llms.txt`](https://sean35mm.github.io/weaver/llms.txt)\n\nRun Claude Code in one terminal, Codex in another, OpenCode in a third, and maybe Pi somewhere\nelse. They can all edit the same repo, but they do not naturally share context. They can collide\non files, duplicate work, miss fresh discoveries, and leave you to reconstruct what happened.\n\n**Weaver is a local coordination layer for coding agents.** It gives every session in a repo the\nsame lightweight whiteboard: who is active, what they are doing, which areas are claimed, what\nchanged recently, and what the repo has taught them.\n\n```console\n$ weaver status\n3 other active sessions\n  claude-code   refactor the auth module       12s ago\n  codex         add a Google OAuth provider     just now\n  opencode      backfill auth unit tests        2m ago\n⚠ src/auth/** claimed by claude-code — coordinate or work elsewhere\n```\n\nWeaver is not another editor, merge tool, daemon, or MCP server. It is a small CLI over a local\nSQLite store. Agents call it with shell commands, humans watch the shared picture, and git remains\nthe source of truth for code.\n\n## Install\n\n```sh\ncurl -fsSL https://raw.githubusercontent.com/sean35mm/weaver/main/install.sh | sh\n```\n\nA single self-contained binary is installed into `~/.local/bin/weaver`. No Node, npm, server, or\ncloud account is required. Supported platforms: macOS and Linux (arm64/x64); on Windows, use WSL2.\n\n```sh\nweaver --version\nweaver init\n```\n\n`weaver init` asks where to install the agent protocol:\n\n- **Project** (`--project`, the default): appends the instruction block to this repo's `CLAUDE.md`\n  and `AGENTS.md`. Covers this checkout only — run `weaver init` again in each repo you want\n  covered.\n- **Global** (`--global`): appends the block to your global instruction files (`~/.claude/CLAUDE.md`,\n  `~/.config/opencode/AGENTS.md`, `~/.codex/AGENTS.md`). One-time setup that covers every repo on\n  the machine — you never run `init` again.\n\nEither way, there is no per-repo database setup: each repo's store is created automatically the\nfirst time an agent runs a weaver command there. After init, your agents coordinate on their own.\n\nFor Claude Code, `init` can also install **hooks** (`--hooks`) that make coordination structural\ninstead of voluntary: before every file edit Claude is warned — advisorily, never blocked — when\nthe target overlaps another live session, and after every edit the session's presence is\nrefreshed automatically. See the\n[Claude Code hooks guide](https://sean35mm.github.io/weaver/guides/claude-code-hooks/).\n\nUpdate with `weaver upgrade`; remove with `weaver uninstall`.\n\n## Try it by hand\n\nYou normally run `weaver init` once and let your agents drive the workflow. To see the behavior\nwithout real agents, simulate two sessions:\n\n```sh\n# terminal 1: alice\nWEAVER_SESSION=alice weaver task \"refactor the auth module\"\nWEAVER_SESSION=alice weaver claim 'src/auth/**' --reason \"rewriting token refresh\"\n\n# terminal 2: bob\nWEAVER_SESSION=bob weaver status\nWEAVER_SESSION=bob weaver check src/auth/login.ts\n```\n\nBob sees Alice's intent and claim before editing:\n\n```text\n⚠ CONFLICT (active claim) on this area:\n  • alice — refactor the auth module\n      claim: src/auth/** — rewriting token refresh\n  → coordinate, work elsewhere, or ask the user how to split.\n```\n\nClaims are advisory. Weaver surfaces the risk; it never blocks an edit.\n\n## How it works\n\nWeaver is a shared whiteboard for agents in the same repo.\n\n| Primitive | Commands | What it answers |\n| --- | --- | --- |\n| Presence | `task`, `status`, `done` | Who is active, and what are they trying to do? |\n| Claims | `claim`, `release`, `check`, `preflight` | Is someone already working in this area? |\n| Notes | `note`, `notes` | What durable repo learnings should future sessions know? |\n| Activity | `log`, `activity` | What changed recently, and where? |\n\nEvery command opens the local store, reads or writes a small amount of state, and exits. There is\nno background process. Liveness is based on heartbeats and TTLs, so crashed agents age out instead\nof leaving permanent locks.\n\nThe store is keyed by repo identity, not by directory. Multiple terminals and git worktrees for\nthe same repo share one commons under `~/.weaver/`.\n\n## Who runs what\n\nAfter setup, Weaver is built to be called mostly by agents.\n\n| Role | Commands | Purpose |\n| --- | --- | --- |\n| Human setup | `weaver init`, `weaver disable`, `weaver enable`, `weaver deinit` | Turn coordination on, pause it, or remove it from a repo. |\n| Agents | `task`, `claim`, `check`, `note`, `log`, `preflight`, `done` | Announce intent, avoid collisions, record learnings, and check risk before commit/push/PR. |\n| Humans | `status`, `watch`, `dashboard`, `notes`, `activity`, `doctor` | Watch the shared picture and diagnose setup when something looks wrong. |\n\nDay to day, humans usually run one of these:\n\n```sh\nweaver status       # snapshot: active sessions, claims, activity, notes\nweaver watch        # live terminal view\nweaver dashboard    # live local web view\n```\n\nAgents follow this loop after `weaver init` teaches them the protocol:\n\n```sh\nweaver status\nweaver task \"refactor the auth module\"\nweaver claim 'src/auth/**' --reason \"rewriting token refresh\"\nweaver check src/auth/login.ts\nweaver note \"AuthService owns token refresh; do not call jwt.* directly\"\nweaver preflight --staged\nweaver done\n```\n\n## What you get\n\n- **Cross-agent presence**: every live session can see the others, even across harnesses and\n  windows.\n- **Advisory file claims**: agents get a clear conflict signal before silently overwriting each\n  other.\n- **Bounded preflight checks**: commits, pushes, and PRs can be checked only against the paths\n  being shipped.\n- **Durable notes**: repo-specific gotchas and conventions survive context compaction and new\n  sessions.\n- **Recent activity**: agents and humans can see what changed without reading every terminal.\n- **Live views**: `weaver dashboard` and `weaver watch` show the commons as it changes.\n\n## Safety model\n\n- **Local only**: coordination data lives under `~/.weaver/`. Weaver does not send your code or\n  notes anywhere.\n- **Serverless**: there is no daemon or coordination server to start, expose, authenticate, or keep\n  alive.\n- **Advisory, not blocking**: claims surface risk. They do not replace git, file locks, review, or\n  merge conflict handling.\n- **Self-healing liveness**: stale sessions and crashed agents age out by TTL.\n- **Universal interface**: any agent that can run shell commands can participate. First-class\n  targets include Claude Code, Codex, OpenCode, and Pi.\n\n## Command map\n\n```text\nAgent commands:\n  weaver task \"\u003cintent\u003e\"                 announce what this session is doing\n  weaver claim '\u003cglob\u003e' --reason \"...\"   claim an area, surfacing overlaps\n  weaver check \u003cpath\u003e                    check whether another live session is there\n  weaver note \"\u003ctext\u003e\"                   record durable repo knowledge\n  weaver log \u003ckind\u003e \u003cpath\u003e \"\u003csummary\u003e\"   record activity\n  weaver preflight --staged              check staged paths before commit\n  weaver preflight --upstream            check branch diff before push\n  weaver preflight --base main           check PR-sized diff\n  weaver done                            end the session and release claims\n\nHuman commands:\n  weaver status                          print the current picture\n  weaver watch                           live terminal view\n  weaver dashboard                       live local web view\n  weaver notes                           list repo notes\n  weaver activity                        list recent activity\n  weaver doctor                          show identity, repo, store, and runtime diagnostics\n\nLifecycle commands:\n  weaver init [--project|--global]       enable Weaver in this repo\n  weaver disable / enable                pause or resume agent writes\n  weaver deinit [--project|--global] [--purge]  remove instructions, optionally delete the store\n  weaver config                          view or tune TTLs\n  weaver upgrade                         update the standalone binary\n  weaver uninstall                       remove the binary\n```\n\nFor exact flags and examples, see the [CLI reference](https://sean35mm.github.io/weaver/reference/commands/).\n\n## Learn more\n\n- [Quickstart](https://sean35mm.github.io/weaver/getting-started/quickstart/)\n- [Using Weaver from an agent](https://sean35mm.github.io/weaver/guides/using-from-an-agent/)\n- [Conflict model](https://sean35mm.github.io/weaver/concepts/conflicts/)\n- [Why CLI, not MCP?](https://sean35mm.github.io/weaver/concepts/why-cli-not-mcp/)\n- [Architecture](https://sean35mm.github.io/weaver/reference/architecture/)\n- [Machine-readable docs for agents](https://sean35mm.github.io/weaver/for-llms/)\n\nContributing: [`CONTRIBUTING.md`](./CONTRIBUTING.md) · Releases: [`RELEASING.md`](./RELEASING.md)\n\n## License\n\nMIT.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsean35mm%2Fweaver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsean35mm%2Fweaver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsean35mm%2Fweaver/lists"}