Open source · MIT · Docker + Postgres
Pulsyr is a backlog manager your coding agent reads and writes over MCP. While the agent works, it pulls context, files items, moves statuses and closes what it finished. Nobody updates a board.
# 1. run it (pulls a prebuilt image; no Node, no build step) docker compose up -d # 2. point any MCP client at it: a URL and a header # https://your-host/mcp # Authorization: Bearer <TOKEN> # in Claude Code that is one line: claude mcp add --transport http pulsyr https://your-host/mcp \ --header "Authorization: Bearer <TOKEN>"
Works with any MCP client
Pulsyr is an MCP server on plain HTTP, so the client is your choice, not ours. These are the ones it is used with; anything else that speaks MCP over HTTP connects the same way, with a URL and a token.
These are the actual tools the agent gets: 26 in total. Not a metaphor for the workflow, the workflow.
The agent opens a session and asks what matters: quick wins, what's blocked and by what, unlinked incidents, threads in flight. It walks the dependency graph live, so the answer is never a stale snapshot.
It finds something worth writing down and files it, with its own impact and effort estimate: it just read the code, so it knows more than any estimate made later from a title.
Status moves as the work moves, through a validated eight-state machine. The agent cannot make an illegal transition, and every change writes an audit event.
Work closes with a reason, and Pulsyr reports what that unblocked. Put pulsyr:<id> in a commit message and the item closes on push.
Typed edges between items. Blocked is derived from the graph in real time, so it is never a flag somebody forgot to clear.
Each MCP token is bound to exactly one project, enforced server-side. The agent cannot write to the wrong one.
Sentry errors land in their own tray, not your backlog. AI triage flags the noise; promoting a real one stays your call.
A funnel for features too big to go straight to the backlog: idea, research, stories, spec, development, review.
Documents with append-only versioning, pendings with owners, and a three-level Gantt the agent edits over MCP.
Closed work grouped by week with its reasons and commits, so "what shipped last month" is a question with an answer.
Not a trial, not a crippled edition, not a licence that turns on you at scale.
Use it, fork it, run it commercially, build a business on it. The name and logo are trademarks: ship your fork under your own name.
Self-hosted has every feature the cloud has. Plans differ by how much of our infrastructure you use, never by which features you get.
It is Postgres. Your data is queryable, exportable over the API and MCP, and the software that reads it is the software you already have.
Configure no keys and it degrades gracefully: items simply carry no estimate. Bring your own key on any plan, including Free.
Every mutation writes an event with actor, action and payload. That is a product feature, not telemetry: it lives in your database.
Pulsyr Cloud runs on Oracle Cloud in Santiago (sa-santiago-1). Your backlog does not leave the country unless you enable AI.
Same software, same features. The difference is who keeps the server up.
Plans differ by how much of our infrastructure you use: never by which features you get. Self-hosting is free and always will be.
Free
$0
Solo
$8 / month · $80 / year
Studio
$20 / month · $200 / year
Pulsyr Cloud is not open for signup yet: write to us and we will tell you when it is. The software is complete and free to run yourself in the meantime. Prices are in US dollars and exclude tax. Refunds within 14 days, no questions asked: see the refund policy.
No. It is the same code, with every feature. The cloud plans cap resources - projects, collaborators, AI calls, document storage: because those cost us money. They never withhold functionality.
None on the code: you can fork it, host it, and charge for it. The catch, such as it is, sits on the brand: "Pulsyr" and the logo are trademarks, so a public fork needs its own name. That is the same line Rust and Grafana draw.
No, and our AI subprocessors do not either under their commercial terms. AI is optional: with no keys configured the service runs fine, items just carry no estimate and incidents stay untriaged.
On Pulsyr Cloud, in Oracle Cloud's Santiago region (sa-santiago-1). It leaves Chile only when you enable AI features, which send the relevant fragments to the providers listed in the privacy policy. Self-hosted, it lives wherever you put it.
Both directions. It is the same software over Postgres, and everything is exportable through the REST API and the MCP tools. There is no proprietary format to escape from.
Anything that speaks MCP over HTTP: Claude Code, Codex CLI, Grok CLI, Cursor, Windsurf, Zed and others. Pulsyr is an MCP server, not a plugin for one vendor, so a client needs exactly two things from you, the URL and a Bearer token. It is built and used daily with Claude Code, which is why that one gets a one-line install; the server itself is a hand-rolled JSON-RPC 2.0 implementation on protocol version 2025-03-26 and does not care who is calling.
Docker and Postgres. No Node, no build step: the interface is server-rendered HTML with HTMX. pgvector is optional and only powers semantic search.
Avonlea Systems SpA, a company in Santiago, Chile. Small on purpose. The product is built the way it is because it is used every day to build itself.
The whole thing is one compose file and a Postgres database. Nothing to sign up for.