TaskPilot for developers — MCP, agents, developer tools
TaskPilot mark TaskPilot developers Sign in

// the same app, seen from a terminal

Put a task on the calendar. Let the agent do it.

A full MCP server with OAuth 2.1, long-polling and ready-made pollers. Your AI tools read your list, pick up work, and write back what they did. Plus a cross-machine file search, a JSON/SQL workbench and a diff tool.

Start with MCP ← Back to the family page

01 · MCP server

Nineteen tools. One endpoint.

Claude (web, Desktop, Claude Code), Cursor and Codex connect over the Model Context Protocol and get the same view a shared login would: list, create, update and complete tasks; read and write notes; search indexed files. wait_for_tasks long-polls and wakes within a second of new work.

API keys inherit a shared login's workspace limits, so an agent can be given "Side project" and nothing else — exactly like a babysitter.

# endpoint
https://taskpilot.co/api/mcp
# discovery
/.well-known/oauth-authorization-server
/.well-known/oauth-protected-resource
tools/list
{{ t.n }}
tasksnotesfileslong-poll

02 · OAuth 2.1

A consent screen, not a pasted key.

TaskPilot is its own authorization server: PKCE, dynamic client registration, refresh tokens. Claude registers itself, you approve it once while signed in, and the token it receives is scoped like any login. Revoke it from Settings whenever you like.

  1. {{ s.n }}{{ s.actor }}
    {{ s.t }}
    {{ s.d }}

03 · Agent pollers

The loop, shipped.

Download agent-poll.sh (or the PowerShell twin) from Settings. Point it at a workspace. It waits for a task, sets it In Progress, runs Claude Code on it, and writes the plan and result into the task's Agent notes. Finished tasks go to Done; questions go to Need Info and wait for you.

  • Several tasks in parallel, each in its own git worktree (MAX_PARALLEL, default 3)
  • Tasks titled [13:45] … are held back until that time
  • One poller per workspace per machine — a second one refuses to start
  • TaskPilot's own AI chat can connect outward to other MCP servers (Linear, Slack…), tokens encrypted at rest
one task, one pass
{{ l.t }}{{ l.tag }}
{{ l.d }}
Done
Branch pushed, notes written, worktree tidied.
Need Info
Agent asks a question in the notes and stops. Answer, set it back, it resumes.

04 · Files view · macOS today

Which computer was that file on?

A single Go binary indexes the folders you choose on each machine. TaskPilot searches names — and the contents of .md/.txt — across all of them as you type, and fetches a preview on demand. Files never leave the machine until you ask to see one. Owner-only.

studio-mac
~/Projects, ~/Documents
● awake · agent v0.9
laptop
~/Projects
○ asleep · identical copy served from studio-mac
register · long-poll ⟶
⟵ scan · fetch (only when asked)
TaskPilot
Index in Postgres (pg_trgm). Search as you type; results as a folder tree per machine; dedupe by content hash.
search ⟶
⟵ tree · preview
/ invoice 2025
studio-mac
└ Documents/Side business/
invoice-2025-11.md
invoice-2025-12.pdf
laptop (via studio-mac)
└ Projects/notes/
invoices-2025.txt

05 · JSON workbench · Diff tool

The small sharp tools, already in your pocket.

Parsing and search run in web workers; SQL runs on DuckDB compiled to the browser. Documents stay on your machine. The diff tool syncs your ignore rules across devices — never the text you pasted.

orders.jsonexport-2026-09.json+
▾ root {3}
▾ orders [12 480]
▾ 0 {6}
id: "A-1042"
total: 184.5
status: "shipped"
▸ 1 {6}
▸ 2 {6}
▸ meta {4}
-- SQL over the document
SELECT status, count(*) n,
sum(total) rev
FROM orders
GROUP BY 1 ORDER BY rev DESC
statusnrevshipped9 8121 204 330pending2 104241 990refunded56461 208
JSON workbench — virtualised tree, fuzzy search, DuckDB SQL, copy pretty / minified / subtree
Definition: nginx logsignore /^\[.*?\]/ignore /req-[a-f0-9]+/
[09:41:02] GET /api/events 200
[09:41:02] GET /api/notes 200
[09:41:03] POST /api/events 500
[09:41:03] GET /api/me 200
[09:41:04] retry req-3f9a… 500
[14:02:11] GET /api/events 200
[14:02:11] GET /api/notes 200
[14:02:12] POST /api/events 201
[14:02:12] GET /api/me 200
—
Diff tool — side-by-side, regex ignore rules, saved definitions, extract mode with CSV export

06 · Keyboard

Never reach for the mouse.

{{ k.k }}{{ k.d }}