Skip to content

Stop re-explaining your project to every agent.

StateDock is shared project memory for you and your coding agents. Goals, decisions and handoffs live on the task, so whichever agent comes next picks up where the last one stopped.

Paste this into your agent

Please read https://statedock.dev/agent.md and follow the guide to connect StateDock so you can read and update my tasks. Let me know if you need my token or confirmation.

  • Free to start
  • Open source, AGPL-3.0
  • Records state. Doesn't run your agents.
ChatGPTPlans
YouDecide
CodexBuilds
SD-000123Example task

Retry queue for Stripe webhooks

PLAN

Sent to your phone

Task record

  1. ChatGPTPLAN

    Saved from the planning chat: signature check and idempotent retries.

Three actors touched this task. The task never moved.

What breaks first when you use more than one agent

  1. New tool, new session, same briefing. Again.

    You plan in ChatGPT, build in Codex, test somewhere else. Every session starts blank, so you paste the goal, the decisions and what already failed. StateDock keeps all of it on the task, and the next agent reads it over MCP before it writes a line.

    resume_projectAny MCP client can read it.

    • ChatGPTplanned it
    • Codexbuilt it
    • Antigravityreviewed it
    SD-000123One task
    Example
  2. “Done.” Done how?

    An agent runs out of quota, hits its context limit, or closes with a confident summary and no evidence. Then you read diffs to find out what actually happened. Every handoff here has the same three parts: what changed, how it was checked, and what comes next, with the commit it refers to.

    submit_handoffIt records the evidence. It doesn't prove it.

    Changed
    Retry queue and signature check for payment webhooks
    Checked
    14 tests pass; replayed 3 failed events
    Next
    Enable in staging

    Commit a1b2c3d · working tree clean

    Example
  3. Your agent is blocked. You're not looking.

    The question sits in a terminal for an hour (“convert the legacy files too?”) and the work stops with it. A blocked task turns into one clear question and reaches your phone through Discord, Bark, ntfy or a webhook, and Telegram on Cloud. You answer once.

    pause_taskAnswering doesn't wake the agent. Tell it to continue.

    WAITINGweb-app-24 · Codex · 10:23

    Needs your decision

    Convert legacy image formats too?

    Sent to your phone

    Example

Agents come and go.Tasks remain.

Switch models when you hit a limit, when a cheaper one will do, or when a better one ships. The goal, the decisions and the history stay where they are.

  1. Plan
  2. Ready
  3. Working
  4. Waiting
  5. Done

Connect once. Every agent reads the same task.

Any MCP client can connect. These are the ones we've checked, and how far we got.

  • Stablewe use it daily to build StateDock
  • Betapublished, verification in progress
  • Communitydocumented, not install-checked yet
  • CodexStableClaims and hands off most of StateDock's own tasks.
  • ChatGPT, web and appStableConnect through OAuth, plan in chat, save it as a task.
  • Google AntigravityStableDelivers many of our tasks over MCP. In-app OAuth isn't verified yet.
  • Any MCP clientStableOAuth 2.1 with PKCE, RFC 8414 and RFC 9728 discovery, and a tool-neutral task record format.
  • DeepSeek HarnessBetaOn npm as @statedock/dsh-plugin. CLI and skills verified; desktop GUI pending.
  • Chrome extensionBetaA toolbar badge for waiting decisions, and capture from any page.
  • Claude CodeCommunitySetup guide and plugin format are ready. Not install-checked yet.
  • CursorCommunityConfigure .cursor/mcp.json from the guide. Not install-checked yet.
  • Gemini, webCommunityStandard remote MCP with OAuth. We haven't verified it ourselves.

You decide what's ready. Your agents keep the record.

  1. Drop the idea in

    One line or a screenshot, from the web, your phone, Telegram or Discord. It stays Planned until you say otherwise.

  2. Mark it Ready

    Then ask your connected agent to work the Ready queue. It claims one task at a time and writes progress back. Marking Ready doesn't start anything by itself.

  3. Get a result or a question

    Done with a handoff, or waiting with one clear question. With notifications on, both reach your phone.

StateDock dashboard across projects

Every active project, the latest handoffs, and which agents are connected.

Why not just a TODO.md or GitHub Issues?

They work, until you have more than one agent, device or person.

TODO.md / AGENTS.mdGitHub Issues / Linear + MCPStateDock
Best forOne person, one agent, one repoTeams with an existing sprint processYou or a small team, with several agents
Plan in ChatGPTCopy and pasteNeeds a custom MCP connectorConnect over OAuth and save straight to Ready
Agent claims a taskInformal comments, easy to collideYour own scripts and labelsA Ready queue, claimed by agent identity
Handoff recordFree textScattered across commentsThree parts: changed, checked, next
Away from the terminalNothing reaches youGeneric email or app alertsPush to Discord, Bark, ntfy or a webhook. Telegram on Cloud.
Where the data livesYour Git repositoryA commercial SaaSSelf-host under AGPL-3.0, or StateDock Cloud

One person, one agent, one repo? A TODO.md is probably enough. StateDock pays off when work crosses tools, devices or people.

Run it where your agents run.

Open source under AGPL-3.0. One program, one SQLite file, the same data format everywhere.

On a Linux server

One command installs it as a systemd service that starts on boot. It backs up before every upgrade and rolls back if the new version doesn't start.

curl -fsSL https://raw.githubusercontent.com/statedock/statedock-local/main/scripts/install.sh \
  | sudo bash -s -- --public-url https://dock.example.com

x64 or ARM64. Runs on 1 CPU and 1 GB. A Docker image is available too.

Server guide

On your Cloudflare account

Deploy to your own Workers, D1, KV and R2. Source, install and operations guides are public, and you manage the data.

Cloudflare guide

View sourceRather not run anything? Use StateDock Cloud

See how StateDock is built.

A read-only mirror of the project StateDock itself is built in: the goals, decisions and agent handoffs as they happened, not a blank sample.

Explore the project

Start solo. Grow with a small team.

A subscription for your account, not per seat.

Free

$0No subscription

  • Active projects2, owned and joined combined
  • Notification channels1
  • Collaborators per projectNone
Start free

ProEarly-bird price

$2.99per monthor $19 per year (save 47%)

  • Active projectsUnlimited
  • Notification channelsUnlimited
  • Collaborators per projectUp to 10
See Pro plans

Prices come from Stripe's current offers. Taxes, if any, are calculated at checkout.

Where your data lives, and who can reach it.

Tokens you can revoke
Each agent gets its own sdm_ token, created and revoked under MCP connections in the app. The server stores only a hash, and the full token is shown once. Web clients like ChatGPT connect through OAuth with separate read and write scopes.
Where data lives
The hosted edition stores data in Cloudflare D1. Sessions are stored as hashes, and cookies are Secure and HttpOnly. If you'd rather not keep data in the cloud, use the local edition or self-host.
Self-hosted and local
The local edition ships with SQLite and needs no sign-in. The Cloudflare edition deploys to your own account.
License
The core is AGPL-3.0 and the plugins are MIT. Using it yourself is unaffected. You only publish your changes if you modify it and offer it to others as a network service.

Connect your first agent in a minute.

  1. Sign in to StateDockGenerate your personal Agent Access Token in Settings.
  2. Send this directive to your AgentYour Agent will read the setup guide and complete configuration automatically.

Once connected, you still decide when work starts.

Paste this into your agent

Please read https://statedock.dev/agent.md and follow the guide to connect StateDock so you can read and update my tasks. Let me know if you need my token or confirmation.