One open-source, self-hosted, AI-native platform for project management, issue tracking, and incident response.
Zagrosi unifies the work that today is fractured across ClickUp, Jira, and incident.io into a single platform you can run yourself. Action items from a postmortem land in the same backlog as your sprint work. Issue severity drives on-call paging. Every surface is reachable from your AI editor through a first-party MCP server.
One platform. One source of truth. Zero per-seat fees.
π§ Pre-alpha. Designing in public. Not yet usable. β Star to follow along.
The modern engineering org runs three siloed tools to do one connected job:
| Tool category | Examples | What it owns |
|---|---|---|
| Project management | ClickUp, Asana, Linear | Day-to-day tasks, projects, docs |
| Issue tracking | Jira, Shortcut | Sprints, epics, agile workflow |
| Incident response | incident.io, PagerDuty, FireHydrant | On-call, response, postmortems |
Each charges per seat. Each owns a slice of the same context. The action items born from a postmortem in tool C have to be retyped into tool A so they actually get worked. The status of a customer-impacting bug lives in tool B, but its incident timeline lives in tool C. There is no shared identity, no shared permissions, no shared search.
And none of them speak fluently to AI editors.
|
Work management with custom fields, multiple views (list / board / calendar / gantt), nested hierarchies, dependencies. |
Agile workflow on top of tasks: sprints, epics, story points, kanban / scrum boards, JQL-style filtering. |
Severity-driven response with on-call schedules, escalation policies, runbooks, status pages, and postmortems. |
Every surface as MCP tools, resources, and prompts. Declare incidents from Claude Code. Page on-call from Codex. |
All four share users, permissions, search, comments, audit log, and integrations. First-class Slack and Microsoft Teams bridges ship in-box: slash commands, auto-created incident channels, threaded action items, on-call paging, and notification routing, both directions. Self-hosted by default. AGPLv3 so it stays that way.
| Layer | Choice |
|---|---|
| Backend | Rust: axum, tokio, sqlx |
| Frontend | React + TypeScript: Vite, TanStack Router/Query, Tailwind |
| Database | PostgreSQL 18: row-level security for multi-tenancy |
| Event bus | NATS JetStream: realtime, event sourcing, durable streams |
| Cache | Valkey: BSD-licensed Redis fork, OSI-approved (Redis Inc. relicensed to non-OSS in 2024) |
| Search | Tantivy: embedded, no Elasticsearch dependency |
| MCP server | rmcp v1.5+: stdio + Streamable HTTP, MCP spec 2025-11-25 |
| Auth | Built-in email/password + OIDC / SAML SSO |
| Deploy | Docker Compose (single-node) + Helm chart (Kubernetes) |
| License | AGPLv3 |
ββββββββββββββββββββββββ ββββββββββββββββββββββββββββββββββββββββββββ
β React Web App β β AI editors: Claude Code, Codex CLI, β
β β β Cursor, Zed, Claude Desktop β
ββββββββββββ¬ββββββββββββ ββββββββββββββββββββββββ¬ββββββββββββββββββββ
β HTTPS + WS β MCP (stdio / HTTP)
βΌ βΌ
ββββββββββββββββββββββββββββββββ βββββββββββββββββββββββββββββββ
β API Gateway (axum) βββββΊβ zagrosi-mcp (rmcp) β
β REST + WS, NATS bridge β β tools / resources / prompts β
ββββββββββββββββ¬ββββββββββββββββ βββββββββββββββββββββββββββββββ
β
β Bounded-context Rust crates routed via NATS JetStream:
β identity, RBAC, work-item core, tasks, agile,
β incidents, alerts, oncall, docs, chat, postmortems...
β
ββββββββββββΌβββββββββββ
βΌ βΌ βΌ
ββββββββββ ββββββββββ ββββββββββ
βPostgresβ βNATS JS β β Valkey β
ββββββββββ ββββββββββ ββββββββββ
Each bounded context is its own Rust crate inside a Cargo workspace. Cross-service calls go through NATS request/reply or shared Postgres tables, never direct HTTP. The MCP server is a thin translator from MCP primitives to api-gateway REST calls; same auth, same permission model, same audit log as the web UI.
A solo build. Dates aspirational, not commitments. The product track and AI-Native track ship in parallel; every product phase lights up matching MCP capabilities.
| Phase | Status | Product | AI-Native (MCP + plugins) | Target |
|---|---|---|---|---|
| 0 | π Planned | Foundation: monorepo, CI, identity, RBAC, multi-tenant, Docker/Helm | zagrosi-mcp skeleton (rmcp, stdio + HTTP, auth handshake) |
~2 mo |
| 1 | π Planned | Tasks: work items, custom fields, list / board / calendar views | MCP v0.1: create_task, list_tasks, update_task, task://<id> resource |
~5 mo |
| 2 | π Planned | Agile: sprints, epics, scrum / kanban boards, story points | MCP v0.2: sprint / board tools + sprint_planning prompt |
~7 mo |
| 3 | π― MVP | Incidents: severity, on-call, escalation, runbooks | MCP v0.3: declare_incident, page_oncall, ack_incident, incident_kickoff prompt |
~10 mo |
| 4 | π Planned | Docs: wiki with Yjs realtime collab | MCP v0.4: doc resources, full-text search tool | ~12 mo |
| 5 | π Planned | Chat + notifications | n/a | ~14 mo |
| 6 | π Planned | Postmortems: timeline, action items β tasks, analytics | MCP v0.5: timeline resource + postmortem_template prompt |
~16 mo |
| 7 | βΎοΈ Ongoing | Integrations marketplace (WASM plugin runtime), mobile, polish | Cursor extension, Zed plugin, Codex skill marketplace listing | ongoing |
Open issues for ideas, complaints, prior art.
π§ TBC: installation instructions will be published once Phase 0 ships.
π§ TBC:
zagrosi-mcpdistribution (Cargo, Docker, prebuilt binaries) and per-client config snippets (Claude Code, Claude Desktop, Codex CLI, Cursor, Zed, Continue.dev) will be published with MCP v0.1 (Phase 1).
π§ TBC: slash commands (
/zag-incident,/zag-sprint,/zag-task,/zag-postmortem) and a guided skill on top of the MCP tools will be published alongside MCP v0.3 (Phase 3).
| Feature | Zagrosi | ClickUp + Jira + incident.io |
|---|---|---|
| Self-hosted | β Always | β SaaS only |
| Open source | β AGPLv3 | β Proprietary |
| Unified data model | β Tasks β issues β incidents linked at the DB | β Three databases, three APIs, three webhooks |
| Single permission model | β One RBAC across all surfaces | β Three separate RBAC systems |
| MCP / AI-native | β First-party MCP server | β None ship MCP today |
| Per-seat pricing | π Zero | π° ~$30 to $80 / user / month combined |
| Vendor lock-in | π Run anywhere | π Triple lock-in |
This is currently a solo project in early design. The fastest way to help right now:
- β Star the repo: signals interest
- π¬ Open a Discussion: share use cases, complaints about your current tools, or design feedback
- π File issues on the design notes once they land
Code contributions will open up after the foundation phase ships. See CONTRIBUTING.md for the full workflow: branch and commit conventions, code review checklist, testing requirements, and DCO sign-off.
GNU Affero General Public License v3.0
Zagrosi is AGPLv3 by design. You can self-host it freely. If you modify it and offer it as a service, you must publish your changes. This keeps the project a true commons rather than fuel for someone else's closed-source SaaS.
Zagrosi takes its name from the Zagros mountains that run through Kurdistan.
Layered ridges, layered modules.