The open-source issue tracker
for people and AI agents.
AI teammates you set up inside it, plus an MCP server so your coding agents can work the board from your editor.
AGPL-3.0 licensed · Bring your own model · No seats, no lock-in
Bulk-edit issues from the board
Created Jul 11 · Updated Jul 11
Saved filters per board view
Created Jul 11 · Updated Jul 11
Issue templates
Created Jul 11 · Updated Jul 11
Cycles and sprints
Created Jul 11 · Updated Jul 11
Import a backlog from CSV
Created Jul 10 · Updated Jul 10
Let agents pick up delegated issues
Created Jul 11 · Updated Jul 14
Collections for saved views
Created Jul 11 · Updated Jul 14
MVLive board refresh on rev change
Created Jul 11 · Updated Jul 14
Inbox digest for mentions
Created Jul 11 · Updated Jul 14
LPNotes canvas autosave
Created Jul 12 · Updated Jul 14
Schedule agent runs by cron
Created Jul 12 · Updated Jul 14
Custom fields per issue type
Created Jul 11 · Updated Jul 12
SIPer-project role & permission matrix
Created Jul 11 · Updated Jul 12
DOSigned webhooks with retries
Created Jul 11 · Updated Jul 12
Scoped API tokens
Created Jul 11 · Updated Jul 12
Built on tools you already trust
Keep control of your stack
Run it on your own server, database, and model. Your data stays with you. No per-seat fees.
Agents that work like teammates
Give each agent a model, skills, and tools. Then assign it issues, just like a person.
Automate every action
Drive the tracker from your own scripts and agents over the REST API or MCP.
Work the same board as your agents
Assign an issue to an agent, or mention it in a comment. Either way it gets to work: replies in the thread, opens linked issues, and moves cards on the board you both share. You set the direction and keep control. The agent does the rest.
1.0CollaborateAdd backoff on webhook rate-limit
Bulk-edit issues from the board
Issue templates per project
Let agents pick up delegated issues
Collections for saved views
Live board refresh on rev change
Custom fields per issue type
Per-project role & permission matrix
Signed webhooks with retries
Let’s try this on the importer. @Triage Bot can you take a first pass?
Reviewed the importer. I’ll add backoff on webhook retries and open a linked issue for the rate-limit case.
@Triage Bot take it and move to In Progress
See the work the way that fits
Board, table, timeline, or calendar. Filter on any field, shape the layout, and save it as a view your team reuses. Same issues, whatever the work needs.
Filter on any field
Stack conditions on state, priority, assignee, labels, or dates to narrow the list.
Save it as a view
Keep the filters, layout, and columns you set, then reuse them with one click.
Shape every layout
Group, order, and pick columns per view. Collapse or hide any column you skip.
Agents you build with skills and tools
Set up an AI agent like a new hire, not a bot. Give it a role, the skills it needs, and the tools for the job. What is left to choose is where it runs.
Hosted agent
Pick a model, write the instructions, tick what it may do. There is nothing to install and no code to write.
Any provider you have a key for
Add the key once, then pick the model for each agent.
Skills it loads when it needs them
Write one, upload a file, or import a set from GitHub.
Tools inside and outside the project
Tick what it may do with issues, and which outside tools it may call.
Threads manager
@threads-manager
Threads manager
@threads-manager·Online
What went live on Threads this week?
Three posts. The Friday launch thread leads on replies. I can draft a follow-up.
Ran on your instance · threads_search
External agent
Some work needs your repository checked out and your own tools installed. An external agent gets a runner instead of a model.
Your machine or your VPS
One command starts the runner where the code already is.
On the coding tools you already use
Your CLI, your config, your logins, or a command you write yourself.
Every chat has a session id
Copy it and continue the same chat in your own terminal.
Frontend Developer
@frontend-developer·Online
MKT-42: the importer drops rows past 10k. Take it in the repo.
Reproduced it in ~/work/my-repo. The batch loop stops at the first empty page. Fixing it now.
Running on your machine · claude
$ cat itsaplan-runner.json
{
"url": "https://plan.acme.dev",
"apiKey": "itp_JA…",
"agent": "claude",
"cwd": "~/work/my-repo"
}
$ npx -y @itsaplan/runner
running claude, polling every 3000ms
MKT-42: started (delegation)
MKT-42: success
# the same chat, in your own terminal
$ claude --resume 8f2c1d94-6b03-47ae-9f21
$ Set recurring work for your agents
Give an agent a recurring task and it runs on its own: hourly, daily, weekly, or a custom cron. Run it now, pause it, or check any result.
3.0AutomateSchedules
Run recurring agent tasks automatically. Schedule times use UTC.
3 schedules
New schedule| Task | Agent | Schedule | Next run | Last run | Actions |
|---|---|---|---|---|---|
Daily task review | Triage bot | Every day at 9:00 AM UTC | Jul 17, 2026, 9:00 AM UTC | Succeeded Jul 16, 2026, 9:00 AM UTC | |
Weekly roadmap check | Planner | Every Monday at 9:00 AM UTC | Jul 20, 2026, 9:00 AM UTC | Succeeded Jul 13, 2026, 9:00 AM UTC | |
Release notes draft | Writer | Every Friday at 4:00 PM UTC | Jul 17, 2026, 4:00 PM UTC | No runs yet |
Choose an agent, describe the task, and set when it should run.
Name
Agent
Task
The agent receives this task on every run.
Schedule (UTC)
Give every major goal one clear view
One place per goal: how far the work has got, who owns it, and whether the target date still holds.
Issues grouped under one goal
Progress you never update by hand
Completion follows the issues underneath, so the initiative is current the moment a task moves.
An owner, a start, a target date
Public roadmap
Give customers a clear view of planned work and recent releases.
Progress
- Backlog6
- Todo8
- In progress5
- Done18
Timeline
On track- Target
- Jul 31, 2026
- Remaining
- 16 days
Active work
3- PLAN-124Publish the public roadmapMV
- PLAN-128Add initiative health updatesSI
- PLAN-131Connect roadmap filtersDO
See where the work actually stands
Every number is read from your issues as they stand now. Nothing to export, nothing to refresh by hand.
Widgets you place yourself
Throughput, cycle time, breakdowns
Split issues by state, assignee, label, or type, and read created against closed week by week.
Agent runs, next to the rest
48
12
31
2.4d
Issues by state
by state- Backlog34
- Todo14
- In Progress12
- Done31
- Canceled5
Throughput
last 12 weeksActivity
by dayRoles that fit how your team works
Every project sets its own roles. The same person can run one and only read another.
Admin, contributor, reviewer, or your own
A full permission matrix
Every resource against read, create, edit, and delete. A role gets the cells you tick and nothing else.
Owners bypass every check
Contributor
PLANrole permissions
| Resource | Read | Create | Edit | Delete |
|---|---|---|---|---|
Work items | ||||
| Work items | ||||
| Work item views | ||||
AI | ||||
| AI agents | ||||
| Integrations | ||||
| Agent skills | ||||
| Agent tools | ||||
Members | ||||
| Members | ||||
| Invites |
A REST API and MCP server, out of the box
Everything the UI does, the API does. Point Claude, Cursor, or your own client at /mcp and every endpoint becomes a tool it can call, with the access of the key it uses.
7.0IntegrateMCP Server
Connect AI agents to this project over the Model Context Protocol. An agent gets the access of the API key it uses.
MCP accessEnabled
Create a personal key on the API keys page, then replace <API_KEY> in the snippet.
Endpoint
https://api.itsaplan.dev/mcpRun this in your terminal.
claude mcp add --transport http plan https://api.itsaplan.dev/mcp \
--header "Authorization: Bearer <API_KEY>"$ claude mcp add --transport http plan \
https://api.itsaplan.dev/mcp --header "Bearer itp_JA…"
Added HTTP MCP server plan
$ claude
> PLAN-132 is in this cycle. Take it, then tell me
what is left.
● plan - get_issue_by_number (MCP)
⎿ PLAN-132 · Rate-limit the importer · High
● plan - update_issue (MCP)
⎿ moved to In Progress, assigned to you
● plan - add_comment (MCP)
⎿ comment added to PLAN-132
● plan - list_issues (MCP)
⎿ 12 open · 3 in progress · 2 in review
● Took PLAN-132 and left a note on the batch loop.
Three issues are in progress, the rest wait in
the backlog.
> Everything a tracker needs, nothing it doesn't
Shape the work and read where it stands.
- Configurable workflow
- Views & filters
- Cycles
- Subtasks & links
- Bulk edit
- Initiatives
- Configurable dashboards
Threads, files, and notes on the issues.
- Comments & @mentions
- Attachments
- Notes boards
- Public links
- Notification inbox
Repeat work that runs without you.
- Quick actions
- Auto-archive
- Agent schedules
- Agent tools & skills
- GitHub skill import
Everything the tracker talks to.
- REST API & webhooks
- MCP server
- Pull request links
- Live refresh
- Five languages
Say what you actually think
We read every review. The complaints are the useful part: they pick what gets fixed in the next release.
Takes a minute · Product Hunt account needed
What shipped recently
v0.14.0
The agent chat is a panel at the right side, Stop a running answer, Type the next message while the agent writes, Pin a column…
Latestv0.13.0
Pull requests from any host, Charts in the chat, A field that holds a person or starts an agent, Notion, One runner, many agents
v0.12.0
Usernames, Replies in an issue thread, Mentions by @username, The agent form
v0.11.0
Chat with an external agent, Stop the queued runs of a schedule, A new issue takes the values of the filters
Start planning
on your own terms
Self-host it today and have your team tracking work by tonight.