Skip to content

Repository files navigation

Internalist

Internal Linear, for agents.
Local issue boards for solo work and agent fleets — markdown files, not a SaaS.

Website · Install · Quick start · Commands


Why

Agents need issue IDs, status, priorities, labels, sub-issues, blockers, and comments — not a sticky note in chat.

internalist keeps all of that as plain markdown under .internalist/ in your repo. No cloud, no account, no sync. Works great for humans too via a local watch UI.

It’s also faster for agents than tracking work over MCP: list, create, update, and close run as local CLI calls with no round-trip waiting on an MCP server or hosted issue API.

Install

Requires Bun ≥ 1.0.

bun install -g github:joshjkns/internalist

Then either command works — il is a short alias for internalist:

internalist --help
il --help

Quick start

cd your-project

# one-time board setup
il init --prefix INT --name my-app

# create work
il create --title "Ship auth flow" --priority 3 --label core
il create --title "Write tests" --parent INT-1

# move things along
il update INT-1 --status in_progress
il list --tree
il close INT-1

# local Linear-style board (live reload)
il watch --port 4280

Staged create (prompts for title, priority, labels) if you omit flags:

il create

What you get

Feature Notes
Statuses backlogtodoin_progressdone (+ canceled)
Priority 04 (none → urgent)
Labels Freeform tags on each issue
Sub-issues --parent INT-1 trees
Blockers block INT-5 --by INT-2 — INT-2 must finish first
Comments Activity threads per issue
Batch Create / update / close many at once
Watch UI Local web board with live reload
Agent skill internalist skill --install

Issues live as markdown + YAML frontmatter. Comments as JSON. Gitignored by default.

Commands

Command What it does
init Create .internalist/ board
create New issue (flags or interactive)
list Filter / tree / JSON
get <id> Show one issue
update <id…> Patch title, status, priority, labels, parent, body
close / reopen Done ↔ open
delete <id…> Remove (blocked if children exist)
block / unblock Blocker edges
comment <id> Add or list comments
watch Local board UI
skill --install Install agent skill
path Print board root

IDs look like INT-12 ({prefix}-{n}).

Useful flags

il list --status in_progress --tree
il list --label core --json

il update INT-1 INT-2 --status todo
il close INT-3 INT-4

il block INT-5 --by INT-2
il comment INT-1 --body "Blocked on KMS" --author Nova

il create --batch --file issues.ndjson

For agents

  1. il skill --install (or point your agent at packages/cli/skills/internalist/SKILL.md)
  2. init once per project
  3. Plan → create issues / sub-issues → claim (in_progress) → work → close
  4. Prefer --json when parsing output
    Agents may use either internalist or il — same binary.

Storage layout

.internalist/
  config.json
  issues/
    INT-1.md
  comments/
    INT-1.json

No database. No network. Your disk, your gitignore.

Website

Live preview and install copy: internalist.jooo.sh

License

MIT

About

internal linear, for agents

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages