The Eisenhower matrix, in your terminal.
A task manager that sorts work by urgency against importance, into four quadrants — the method popularized by the president whose campaign-era nickname it borrows. What makes it unusual is that an agent can work with it in both directions:
- An agent can manage your matrix.
ike mcpserves the Model Context Protocol, so Claude Code or any MCP client can capture, complete, and reprioritise tasks while you work. Off until you allow it. - You can hand a task to an agent.
ike plan 3drafts a plan you read and argue with;ike delegate 3carries it out in the task's own directory and streams what it does. Also off until you allow it — separately.
One Go binary, three ways in (TUI, CLI, MCP), over a single JSON file that is
yours: mode 0600, on your disk, no account and no server. All three can run at
once without losing writes.
brew install jonascript/tap/ike
Or with Go 1.25+:
go install github.com/jonascript/ike@latest
Linux and macOS, Intel and Apple silicon. Prebuilt archives are attached to every release — they are not code-signed, so verify what you download:
shasum -a 256 -c checksums.txt --ignore-missing gh attestation verify ike_0.2.0_darwin_arm64.tar.gz --repo jonascript/ike
That second command checks ike's published build provenance, which proves the archive was built by this repository's release workflow from the tag it claims.
ike add "Fix prod bug" -q 1 # quadrant 1: urgent and important ike add "Write the release notes" # defaults to quadrant 2 ike # open the matrix
| Urgent | Not urgent | |
|---|---|---|
| Important | 1 · Do It First | 2 · Schedule It |
| Not important | 3 · Delegate It | 4 · Consider Eliminating It |
Those headings are defaults, not fixed — rename any of them with t in the TUI
or ike label. The quadrant numbers never change, so scripts and the MCP
tools keep working whatever you call them.
Run ike with no arguments.
| Key | Action |
|---|---|
1–4, tab / shift+tab |
focus quadrant |
j/k or ↑/↓ |
select task |
J/K or shift+↑/shift+↓ |
move task down/up within its quadrant |
a |
add task to focused quadrant |
e |
edit task title |
t |
rename the focused quadrant |
x / enter |
complete task (moves to archive) |
m then 1–4 |
move task to quadrant |
d twice |
delete task permanently |
u |
undo the last change |
U / ctrl+r |
redo |
v |
archive view (r there restores a task) |
s |
space picker (enter switch, n new, r rename, d twice delete) |
] / [ |
next / previous space |
f |
data file picker (o there types a path) |
p |
show the plan attached to the selected task |
P |
ask an agent to draft a plan |
c |
open a Claude Code session and talk the plan through (resumes the task's) |
C |
same, but to work on it together |
D |
delegate the task to an agent, or reattach to a run already going |
? |
toggle help |
q |
quit |
Changes made by the CLI or MCP server while the TUI is open appear within ~2 seconds.
A dim ◆ mcp marker sits in the footer while agent access is
enabled. No marker means nothing but you can reach the matrix. After a title,
✎ means the task has a plan attached, ⌁ that it has a conversation you can
pick back up, and ⣾ that an agent is working on it right now.
ike add "Fix prod bug" -q 1 # quadrant 1-4; defaults to 2 (Schedule) ike list # active tasks grouped by quadrant ike list -q 1 --json # filter + machine-readable output ike done 3 # complete task 3 (archives it) ike mv 3 2 # move task 3 to quadrant 2 ike reorder 3 up # up | down | top | bottom, within its quadrant ike rm 3 # delete permanently (no archive) ike archive # completed tasks, newest first ike restore 3 # un-archive task 3, back to its quadrant ike undo # revert the last change, from any frontend ike redo # re-apply the last undone change ike label 1 "Firefighting" # rename a quadrant (--reset restores the default) ike plan 3 # draft a plan for task 3 ike delegate 3 # hand task 3 to an agent ike agent status # whether ike may run an agent ike space # list spaces ike list -s work # act on one space just this once ike --file /path/to.json list # act on a different data file
Both directions are off by default, and they are separate decisions: letting an agent edit your task list and letting ike start a process that edits your files have very different blast radii.
ike mcp enable # let an MCP client read and manage this matrix ike agent enable # let ike run an agent on a task's working directory
Serving your matrix over MCP. ike mcp runs a stdio server with tools for
listing, adding, completing, moving, reordering, archiving, and undoing —
scoped to one space if you launch it that way. ike mcp disable takes effect
immediately, even on a client already connected.
ike mcp enable
claude mcp add ike -- ike mcpHanding a task over. ike plan 3 asks an agent to explore the task's
directory and draft a plan, which is attached to the task for you to read and
edit — that run is read-only and needs no permission. ike delegate 3 then
carries the plan out and streams what it does. -i on either hands you the
terminal for a real Claude Code session instead, resuming the same conversation
each time you come back to the task.
A delegated run never completes the task. You read what it did and decide.
→ docs/agents.md covers the consent gates, what a delegated run is actually allowed to do (with measurements — the permission modes are not a safety ladder), how ike picks an effort level per run, and where plans are stored.
One file holds several independent matrices, called spaces — work and
personal, say. Each has its own tasks, archive, headings, ID numbering, and undo
history, so ike undo in one can never reach into another.
ike space new work ike space use work # every later command follows ike add "Fix prod bug" -s work # or act on one space just once
Everything lives in ~/.local/share/ike/tasks.json (mode 0600, in a 0700
directory). Writes go through a lock file and an atomic rename with the previous
contents kept as .bak, so three frontends can run at once and an interrupted
write costs one change rather than the matrix. The file is self-contained and
portable — copy it to another machine and every space comes with it.
→ docs/data.md covers spaces in full, exporting and
importing a single matrix, the file's durability guarantees and their one
caveat (flock on network mounts), undo/redo semantics, and renaming quadrants.
Linux and macOS. Both run the full test suite on every change, and release
archives are built for darwin/amd64, darwin/arm64, linux/amd64, and
linux/arm64.
Windows is not supported, and is not on the roadmap. It is not built, not
released, and not tested. go install will probably give you a working binary —
nothing in ike is deliberately Unix-only — but the data file would land at
%USERPROFILE%\.local\share\ike\tasks.json, following XDG conventions rather
than anywhere a Windows user would think to look, and no Windows path is
exercised by CI. So: unsupported rather than known-broken. A pull request adding
proper path resolution together with Windows CI coverage would be welcome; one
without the CI would just move the untested surface around.
Bug reports and focused pull requests are welcome. See CONTRIBUTING.md for the build commands, how the three frontends sit over one store, and the store invariants worth knowing before changing it. Security issues go through SECURITY.md rather than the issue tracker.
MIT. Third-party dependencies and their licenses — all permissive, none copyleft — are listed in THIRD_PARTY_LICENSES.md.
Logo based on Eisenhower's official White House portrait of May 29, 1959 (White House / Eisenhower Presidential Library). It is a work of an employee of the Executive Office of the President made as part of their official duties, and so is in the public domain as a work of the U.S. federal government. No attribution is required; it is recorded here so anyone redistributing ike can verify the claim for themselves.
