pulsyr

Open source · MIT · Docker + Postgres

A backlog only stays alive if the one doing the work is the one updating it.

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.

Quickstart two commands
# 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.

Four calls, and the record keeps itself

These are the actual tools the agent gets: 26 in total. Not a metaphor for the workflow, the workflow.

pulsyr_context

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.

pulsyr_create

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.

pulsyr_advance

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.

pulsyr_complete

Work closes with a reason, and Pulsyr reports what that unblocked. Put pulsyr:<id> in a commit message and the item closes on push.

What you get

Dependency graph

Typed edges between items. Blocked is derived from the graph in real time, so it is never a flag somebody forgot to clear.

One database, many projects

Each MCP token is bound to exactly one project, enforced server-side. The agent cannot write to the wrong one.

Incident container

Sentry errors land in their own tray, not your backlog. AI triage flags the noise; promoting a real one stays your call.

Threads

A funnel for features too big to go straight to the backlog: idea, research, stories, spec, development, review.

Management

Documents with append-only versioning, pendings with owners, and a three-level Gantt the agent edits over MCP.

Archive

Closed work grouped by week with its reasons and commits, so "what shipped last month" is a question with an answer.

Open source, and it stays that way

Not a trial, not a crippled edition, not a licence that turns on you at scale.

MIT, the real one

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.

Nothing is gated

Self-hosted has every feature the cloud has. Plans differ by how much of our infrastructure you use, never by which features you get.

No lock-in

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.

AI is optional

Configure no keys and it degrades gracefully: items simply carry no estimate. Bring your own key on any plan, including Free.

Auditable by design

Every mutation writes an event with actor, action and payload. That is a product feature, not telemetry: it lives in your database.

Hosted in Chile

Pulsyr Cloud runs on Oracle Cloud in Santiago (sa-santiago-1). Your backlog does not leave the country unless you enable AI.

Run it yourself, or let us run it

Same software, same features. The difference is who keeps the server up.

Self-hosted

  • Every feature, no tiers, no gates
  • Your server, your database, your data
  • Bring your own AI keys, or run without AI
  • MIT licensed: fork it, sell services on it
  • You handle backups, updates and uptime
Read the setup guide

Pulsyr Cloud

  • Every feature, same as self-hosted
  • Backups, updates and monitoring handled
  • Hosted on OCI in Santiago, Chile
  • AI included, or bring your own key
  • Export everything at any time over the API
Ask for early access

Cloud pricing

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

  • 1 project
  • 1 person
  • 100 AI operations a month
  • 100 MB of documents
  • Your own AI key, unmetered
Ask for early access

Studio

$20 / month · $200 / year

  • Unlimited projects
  • 10 collaborators
  • 10,000 AI operations a month
  • 25 GB of documents
  • 30 days of backups
Ask for early access

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.

Straight answers

Is the self-hosted version limited?

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.

What is the catch with the MIT licence?

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.

Do you train AI on my backlog?

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.

Where does my data live?

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.

Can I move between cloud and self-hosted?

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.

Which agents work with it?

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.

What do I need to run it?

Docker and Postgres. No Node, no build step: the interface is server-rendered HTML with HTMX. pgvector is optional and only powers semantic search.

Who is behind this?

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.

Clone it and see for yourself

The whole thing is one compose file and a Postgres database. Nothing to sign up for.