It’s a Plan

The open source issue tracker for your team and AI agents.

A self-hosted alternative to Linear and Jira.Hand any issue to an agent and keep the final say.

itsaplan.dev/kanban
BeaconMV
All
BCN-31bug: Heartbeat check marks a monitor down one interval too early
↑ ↓ move↵ assignType to filter

13 languages

  • English
  • Українська
  • Русский
  • 简体中文
  • 繁體中文
  • العربية
  • فارسی
  • Français
  • Português
  • Bahasa Indonesia
  • Español
  • 한국어
  • Türkçe

Product Hunt

5.0 out of 5

Every review so far gives five stars.

“Each agent has its own account”

They can pick up tickets, update their progress, leave comments, and assign work to each other.
SkragusRuns a team of AI agents

“Issue delegation to the level that It’s A Plan does”

I was using the Linear free plan but ran into the issue max. I converted to Plane…
ScottMoved from Linear and Plane

“It’s an amazing product”

I was testing all kinds of issue trackers for many years and now there’s finally a product that’s self-hostable, not restricted in the number of seats and is pleasant to use.
Balázs PáriTried many trackers before

1.0 · Collaborate

You keep the issue, the agent does the work

Each issue has an assignee and a delegate. The agent works under its own name, so the activity log shows who did what.

PLAN-142AssigneeMVMira VosDelegateTriage Bot

Your project · Importer board

Todo5
PLAN-143

Setting for the old import behavior

importer

Created Oct 24 · Updated Oct 24

MV
PLAN-141

Map custom fields on import

importer

Created Oct 23 · Updated Oct 24

SI
PLAN-140

CSV preview cuts long names

importerbug

Created Oct 23 · Updated Oct 23

PLAN-138

Import from Linear keeps labels

Created Oct 22 · Updated Oct 22

DO
In Progress3
PLAN-136

Retry failed webhooks with backoff

webhooks

Created Oct 21 · Updated Oct 24

DO
PLAN-135

Bulk edit from the table view

Created Oct 20 · Updated Oct 24

SI
PLAN-133

Faster board with 5,000 issues

Created Oct 19 · Updated Oct 23

In Review2
PLAN-142your review

Importer skips rows with an empty date

importer

Created Oct 24 · Updated Oct 24

MV
PLAN-131

Docs for the import API

docs

Created Oct 18 · Updated Oct 24

Done14
PLAN-127

Signed webhooks with retries

Created Oct 9 · Updated Oct 12

DO
PLAN-124

Import progress in the status bar

Created Oct 6 · Updated Oct 9

SI
Canceled2
PLAN-119

Duplicate of PLAN-112

Created Oct 3 · Updated Oct 3

PLAN-142 · In Review

Importer skips rows with an empty date

CommentsActivity

  1. MV

    Mira Vos delegated to Triage Bot

    09:10
  2. Triage Bot moved from Todo to In Progress

    09:11
  3. Triage Bot commented: should I import those rows?

    09:12
  4. MV

    Mira Vos commented: yes, keep the old behavior

    09:15
  5. Triage Bot created PLAN-143 and linked it

    09:30
  6. Triage Bot moved from In Progress to In Review

    09:31

Views

One set of issues, a view for every job

Lay out the same issues as a board, a table, a timeline or a calendar. Save the filters and the layout as a view, and the whole team opens it in one click.

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.

2.0 · Delegate

Build strong AI agents

Write down how your team does a job, choose the tools an agent may use, then hand it an issue. It runs on your own key with any provider, or through Claude Code on your machine. We don't sell AI credits.

In the app

Hosted

The no-code way. Set it up in the app and it runs on your instance.

Model
Any provider, on your own API key. You keep full control of the model and the spend. Pick it per agent.
Skills
Loads them when it needs them. Write one, upload a file, or import a set from GitHub.
Tools
Tick what it may do with issues, and which outside tools it may call.

On your machine

External

Runs where the code already is.

Where
Your machine or your VPS. One command starts the runner.
Tools
Your CLI, your config, your logins, or a command you write yourself.
Chats
Every chat has a session id. Continue it in your own terminal.
claudecodexopencodeantigravitycopilotor your own command, with the task on stdin.

3.0 · Automate

Let agents take the routine work

Give an agent a task and a time to do it, like every weekday at 9:00, or have it start when an issue changes state. With Pro it also reacts to what people do on issues. You can start or pause it by hand, and its run history shows what it did each time.

  • Every hour, day or weekor a cron you write
    0 9 * * 1-5
  • When an issue enters a stateafter a wait you set
    moved to In review

Pro · on issue eventsL05 · Agent schedules Pro

  • When an issue is createdby any person, or by the people you pick
  • When an issue is assignedan assignee is set
  • When a label is addedone of the labels you pick, or any
  • When a comment is addeda person comments on an issue

Only for issuesa view filter, a creator, the state it comes from

How oftenruns per 24 h, runs at once

Who starts ita person's action, never an agent's

See what Pro adds

4.0 · Plan

Group issues into goals you can track

Link issues from anywhere in the project to one initiative. It counts what is done and puts it next to the time gone, so you can tell early whether the date will hold.

Progress you never update by hand

The percentage counts the issues under the goal by state, so it changes as soon as someone moves one.

Every goal has an owner

Each initiative has an owner, a priority and a health status. Its issues stay on the team board and show up here too.

Initiative · Public roadmap

49%

On track for Jul 31, 2026 · 16 days left

Work done49%
Time elapsed64%
  • Done18
  • In Progress5
  • Todo8
  • Backlog6

5.0 · Measure

See where the work actually stands

Throughput, burnup, and breakdowns by state, priority, type, or assignee. Every number is read from your issues as they stand now. Nothing to export, nothing to refresh by hand.

1,003changes in the
last 26 weeks

Open
48
In progress
12
Done a week
31
Unassigned
7

6.0 · Control

Decide who can do what in each project

Every project has its own members and roles. You build a role by ticking what it may read, create, edit and delete.

Project-level RBAC. Project owners always keep full access.

MOBMobile app/ Members
SReviewer
MContributor
Contributor canReadCreateEditDeleteWork itemsWork item viewsAI agentsInvites

7.0 · Integrate

A REST API and MCP server, out of the box

Everything the UI does, the API does. Point Claude Code, Cursor, or your own client at /mcp and over 200 API routes become tools it can call, with the access of the key it uses.

For your scripts

REST API

One call per action the UI has.

$ curl https://api.itsaplan.dev/projects/PLAN/issues \
    -H "Authorization: Bearer $PLAN_KEY"

[
  { "key": "PLAN-132",
    "title": "Rate-limit the importer",
    "priority": "high" },
  ...
]

For your agents

MCP server

Over 200 tools on the same API.

$ claude mcp add --transport http plan \
    https://api.itsaplan.dev/mcp
Added HTTP MCP server plan

> Take PLAN-132.
● plan - get_issue_by_number
  PLAN-132 · Rate-limit the importer · High
● plan - update_issue
  moved to In Progress, assigned to you

Both run with the access of the API key they use.

8.0 · Deploy

One click, or your own server

Railway runs the published images and generates every secret. On a server of your own, one compose command starts Postgres, RustFS and the four services.

$ docker compose up -d

Pricing

The price does not grow with your team

Community is free for any number of people. Pro is $240 a year, or $24 a month, for the whole instance.

It's a Plan
Community
Self-hosted · AGPL-3.0

  • C01Issues, views, cyclesyes
  • C02Docs and dashboardsyes
  • C03AI agentsyes
  • C04REST API, MCP serveryes
  • C05People and projectsunlimited
  • C06Workspacesone per person
  • C07Sign-inOIDC, SCIM

Seatsunlimited

Total / year$0.00

Deploy Community

Free forever. Any number of people.

Per seat against flat

What 10 people pay a year

List prices, billed yearly, checked in October 2026. Linear and Asana run only in their own cloud; Jira no longer sells its self-managed edition.

  • Asana Advanced$2,999Pro is 91% cheaper
  • Linear Business$1,920Pro is 87% cheaper
  • Jira Standard$950Pro is 74% cheaper
  • Plane Pro$720Pro is 66% cheaper
  • It's a Plan Pro$240flat

Everything else

Everything a tracker needs, nothing it doesn't

Everything below is in Community, free under AGPL-3.0. The items marked PRO come with the Pro edition.

Track 13

Shape the work and read where it stands.

  • Workflow & WIP limits
  • Issue types & custom fields
  • Labels, priorities, estimates
  • Time tracking
  • Subtasks & checklists
  • Blocks, relates, duplicates
  • Cycles
  • Initiatives
  • Board, table, timeline, calendar
  • Saved views & filters
  • Bulk edit & templates
  • Configurable dashboards
  • Workspace dashboardPRO

Collaborate 09

Threads, docs, and notes on the issues.

  • Comments & @mentions
  • Docs with revisions
  • Docs co-editing
  • Attachments
  • Notes boards
  • Watchers
  • Notification inbox
  • Email & Telegram alerts
  • Public links

Automate 12

Repeat work that runs without you.

Connect 07

Everything the tracker talks to.

  • REST API & webhooks
  • MCP server
  • Pull requests from 5 forges
  • Import from Linear & Plane
  • Live refresh
  • 13 languages
  • Public formsPRO

Control 11

Who gets in, and what they may do.

Start planning on your own terms

Self-host it today and have your team tracking work by tonight.

AGPL-3.0 · No per-seat fees · Bring your own model keys