Your AI agent got stuck at 2am. It didn't know you were asleep.

HeadsDown tells your AI agent when you're around, when you'll be back, and what to do when you're not. Set up takes 2 minutes.

11:02pm · Agent hits a decision point
{
  "status": "OFFLINE",
  "returnsAt": "2026-04-03T09:00:00-06:00",
  "action": "DEFER",
  "reason": "Offline until 9 AM. Queued for morning digest."
}
Works with Claude Code, Pi, Cursor, and more Open-source client code Free, no credit card

How it works

Three steps. Two minutes to set up. Your agent never has to guess again.

Set your availability

hd busy 2h from your terminal. A tap on your phone. Or let Google Calendar handle it automatically. HeadsDown knows when you're online, in deep work, or gone for the night.

Your agent checks before it interrupts

One call. Your agent gets back: are you online? When are you back? Who else on your team can help right now?

The right thing happens automatically

Back in 20 minutes? The agent waits. Gone until morning? It queues the question for your digest, routes to a teammate, or taps your watch for a 10-second yes/no. Your rules.

Your agent will need you. Here's what happens when you're not there.

Most tasks don't need human input. But the ones that do, a migration that needs approval, an ambiguous spec that needs clarification, those are the ones that get stuck.

Without HeadsDown

Your agent hits a decision point at 11pm. It has no idea you're asleep. It waits. You wake up at 6am and find it's been blocked for 7 hours on a question that would have taken 10 seconds to answer.

Multiply by every night, every meeting, every lunch break.

You're back soon

Your agent hits a decision point while you're in a 30-minute meeting. HeadsDown says: "back in 22 minutes." The agent parks the question, continues other work, and asks you the moment you return.

No notification needed. No wasted time.

Gone for hours

Your agent hits a decision point at 11pm. HeadsDown says: "offline until 9am, Bob is online." The agent can queue it for your morning digest, route to Bob, or tap your watch for a 10-second approval.

Your rules. The agent follows them.

>_
Agent needs human input
HeadsDown "Available?"
20 min · Agent waits
Hours · Phone notified
Teammate · Routed to Bob

Your phone is your command center

Native iOS and Android apps with push notifications, home screen widgets, Apple Watch and Wear OS complications, and lock screen quick actions. When your agent needs a yes/no at 2am, it taps your wrist. When you wake up, your morning digest is waiting.

The difference between a productive overnight agent and a stuck one isn't the model. It's whether the agent knows your schedule.

One API call. A structured decision.

Your agent sends a task proposal. HeadsDown checks your availability and returns what to do next.

Deferred

GraphQL mutation
mutation {
  submitProposal(input: {
    agentRef: "claude-sonnet:pi"
    model: "claude-sonnet-4"
    framework: "pi"
    description: "Migrate all 12 database models to new schema"
    estimatedFiles: 12
    estimatedMinutes: 50
    sourceRef: "proposal-migration-001"
  }) {
    decision reason proposalId evaluatedAt
  }
}
HeadsDown returns
{
  "data": {
    "submitProposal": {
      "decision": "DEFERRED",
      "reason": "Offline. 12-model migration deferred. Back at 9 AM MT.",
      "proposalId": "e5f6g7h8",
      "evaluatedAt": "2026-04-02T22:15:00Z"
    }
  }
}

The response is structured JSON. Not a prompt the agent can reinterpret. Not a suggestion it can hallucinate around. A decision: APPROVED, DEFERRED, or SCOPED.

What you get with Early Access

Everything. No paywall. No "upgrade to unlock." Early access members get the full product while we're building it.

  • Works with Claude Code, Pi, Cursor, and any agent that speaks HTTP
  • CLI tool
    hd busy 2h hd offline until 9am hd online
  • Google Calendar sync: your availability updates when meetings run long or focus blocks start
  • Structured decisions via API: APPROVED, DEFERRED, SCOPED
  • Push notifications for blocking questions (iOS + Android)
  • Morning digest: queued questions delivered when you start your day
  • Team routing: your agent finds who's online when you're not
  • Native iOS + Android app with widgets, watch complications, and lock screen actions
  • Web dashboard for managing your availability and reviewing agent activity

Free during Early Access. Early users get a permanent discount when we launch pricing.

HeadsDown is an API. Anything that can make an HTTP request can check your availability before it interrupts you: agents, Slack bots, deploy pipelines, CI/CD, internal tools. Start with your agent. The rest follows.

Open source where it matters

Everything on your machine is open source and auditable. The engine behind the API is the product.

headsdown-skill/src/index.ts
// The agent checks HeadsDown before every taskimport { GraphQLClient } from "graphql-request"; const client = new GraphQLClient(HEADSDOWN_URL, {  headers: { authorization: `Bearer ${API_KEY}` },}); export async function beforeTask(task) {  const { submitProposal } = await client.request(`    mutation($input: ProposalInput!) {      submitProposal(input: $input) {        decision reason proposalId      }    }  `, {    input: {      agentRef: task.agent,      model: task.model,      framework: "pi",      description: task.description,      estimatedFiles: task.files,      estimatedMinutes: task.minutes,      sourceRef: task.id,    },  });   if (submitProposal.decision === "DEFERRED") {    return task.defer(submitProposal.reason);  }  return task.proceed();}

Tap each boundary to see the corresponding code below.

Why I built this

I spent three years building availability tools for teams. The problem was always the same: things interrupt people because they have no idea who's around. Then I started using AI agents and realized they have the exact same problem. Same gap, new audience. This time the integration is two minutes, not two quarters.

Solo founder. Elixir + Phoenix. Building in public.

Your AI tools run 24/7. You don't have to.

Sign up, add HeadsDown to your agent, and it'll know your schedule by the end of the day. Set up takes 2 minutes.

Frequently asked questions

Task metadata only: description, estimated scope, model name, and framework. HeadsDown never receives your source code, prompts, agent conversation history, or file contents. After a task completes, timing data (duration, outcome) is reported back for calibration. The open-source skill code is fully auditable so you can verify this yourself.
Two minutes. Add HeadsDown to your agent, connect your calendar, set your timezone. Your agent checks HeadsDown automatically from that point on.
A config file knows your schedule as of the moment you wrote it. HeadsDown syncs with Google Calendar, so it knows your 2pm meeting ran 20 minutes long, that your focus block just started, and that your teammate just came online. Availability is live, not static. A system prompt says "I work 9-5." HeadsDown says "back in 22 minutes, Bob is online and can review right now."
Dispatch is a remote control for Claude's task queue. HeadsDown is your availability for everything. Set it once, and every tool that wants your attention checks the same source: Claude, Cursor, Slack bots, deploy pipelines, internal tools. Dispatch manages one agent's backlog. HeadsDown answers one question for anything that asks: "Is this person available, and if not, what should I do?"
We hope they do. The beauty of HeadsDown is that it ties those systems together. If Claude adds availability and Cursor adds availability, great: HeadsDown syncs them both. Set your status in one place, and every tool stays in sync. It's two-way. An open ecosystem, not a walled garden. The more tools that understand availability, the more valuable the layer that connects them all becomes.
Yes. Everything is included during Early Access. No feature gates, no trial limits, no "upgrade to unlock." When we launch pricing, early users get a permanent discount. We'll give you plenty of notice before anything changes.
At launch: Pi skill and Claude Code extension. The underlying API works with any agent that can make an HTTP request. Community-built integrations for other frameworks are welcome.
No. HeadsDown doesn't assume when you work. You set your own modes and times, and they can change hour to hour. Coding at 11pm on a Saturday side project? Set yourself as online. Taking Wednesday off? Set yourself as offline until Thursday. There's no "work hours" concept built in. Your agent sees whatever you tell HeadsDown right now, not a fixed weekly schedule.