Anvil
Local-first · Real-time · Forge-native
A Linear-fast issue tracker you host yourself. One Go binary, one Postgres, no Redis, no Node server, no search cluster.
[open anvil ↗]
Fast trackers are SaaS-only. Self-hosted ones are slow, don't work offline, or are tied to one forge.
Teams on Gitea, Forgejo or GitLab, or on air-gapped networks, get neither speed nor sync. Anvil gives them both,
and lets them use local AI models too.
[pg_notify] → every node → Protobuf deltas → [SQLite in every tab]
Changes are numbered without gaps in commit order, and the numbering costs no extra round trip. Go and TypeScript run the same mutators against 49 shared test cases.
Property-tested with partitions, duplicates and deletes, 10,000 runs at a time.
One leader Web Worker per browser, elected with Web Locks, owns a SQLite WASM database on OPFS. It holds a queue of unsent writes, so the UI renders instantly from local data, works offline and catches up when you reconnect.
Issue descriptions are Yjs documents, so several people can edit at once. On the server, a Rust yrs module compiled to WASM runs inside Go via wazero and turns incoming forge edits into proper CRDT changes.
Two-way sync with GitHub, GitLab, Gitea and Forgejo. Every adapter passes the same test suite against real forge containers, including webhook replay attacks and lossless Markdown round-trips. Scheduled jobs repair missed webhooks.
Duplicate detection, triage suggestions with linked evidence, filters written in plain language, and summaries with citations. It works with Anthropic, OpenAI or a local Ollama, and every feature is tested against 1,900 offline eval cases.
Hand an issue to Claude Code or Codex. They run under gVisor with a read-only root, no capabilities and an egress allow-list. Clones go through a fetch-only git proxy, so no forge credential reaches the runner.
OIDC, SAML, SCIM, passkeys, a hash-chained audit log and envelope encryption. Also a TUI, VS Code / JetBrains / Neovim plugins, an MCP server, and Go and TypeScript SDKs.
- → 80% coverage required on core packages (sync 90%, policy 95%), with race-enabled tests and fuzzing
- → Playwright on Chromium, Firefox and WebKit: offline, multi-tab, collaboration, accessibility
- → OWASP ZAP scan, plus cargo and pnpm audits, in CI
- → Signed binaries and images (cosign), SBOMs, a Helm chart and an air-gapped install bundle