For solo developers
You and your agents, one repo. The plan lives outside any one session, the agents ask before they guess, and done means merged.
Working alone with Claude Code or Codex, the plan tends to live in three places: the chat of whichever session made it, a TODO file on some branch, and your head. A new session knows none of it. Hamloy is one list the agents keep for you, on hamloy.com, the same from every session and every machine.
Start in the folder you work in
One paste, in your repo's folder:
$ curl -fsSL https://hamloy.com/install | sh
On Windows, in PowerShell: irm https://hamloy.com/install.ps1 | iex. It
installs the hamloy program, signs you in once in the browser, and connects
the folder for Claude Code and Codex. hamloy disconnect undoes it. More in
the program.
From then on, a session starts by hearing the lists and its next task. You ask for something; the agent writes the plan into Hamloy, claims a task, and works. Ask Claude to plan sync between devices and it may write:
⏺ hamloy - Add an item (MCP)(title: "Sync habits between devices", section: "Next",
needs: ["Q-is21"], subtasks: ["Local SQLite cache", "Upload changes when online",
"Resolve two edits of one habit"])
⎿ B-1nw7@1 Sync habits between devices (0 of 3 subtasks done; waits on Q-is21)
B-ssbf@1 Local SQLite cache (subtask of B-1nw7)
B-v7c6@1 Upload changes when online (subtask of B-1nw7)
B-x51r@1 Resolve two edits of one habit (subtask of B-1nw7)
Decisions come to you as questions
The sync task waits on Q-is21, a question: where synced habits should live. The agent gives the options and the one it recommends, then does the part that doesn't depend on the answer. You answer on the board, in one click, whenever you look.
Answering this lets Offline sync with a local SQLite cache go ahead.
• I asked you where synced habits should live (Q-sy2c). Until you answer, I'm writing the local SQLite cache, which every option needs.
If it can't wait, it may assume its recommendation and go on. The question stays open, marked assumed, until you confirm or overturn it. See questions.
What only you can do
An Apple Developer account, a key, a payment, a DNS record, a deploy: the agent can't do these, so it writes them on Requests with the exact steps, and links the tasks that wait on them.
⏺ hamloy - Add an item (MCP)(kind: "request", title: "Make an APNs key for push reminders", body: […], needs: ["R-h2qe"])
⎿ R-p4nk@1 Make an APNs key for push reminders
⏺ Push reminders need an APNs key, and only you can make one. The steps are on your list. I'm going on with the settings screen meanwhile.
- In developer.apple.com › Certificates, IDs & Profiles › Keys, press +
- Name it Pebble push and tick Apple Push Notifications service
- Download the .p8 file and put its path in .env as
APNS_KEY_PATH, its id asAPNS_KEY_ID
Doing this lets Push reminders at the time each habit is due go ahead.
Done means merged
Hamloy follows the work through git. A task ticked on a branch says so until the branch is merged and pushed:
[x] B-se4t@5 Offline sync with a local SQLite cache (done by codex on 2026-10-09;
on feat/offline, not merged into main yet)
A branch deleted without merging turns its task red on the board, and only you can count it done anyway. A rebase doesn't fool it, and neither does a squash that settled a conflict by hand. See git.
• Ran swift test
└ Test Suite 'All tests' passed: 48 tests
• Called hamloy.tick({"key":"B-se4t@4"})
└ [x] B-se4t@5 Offline sync with a local SQLite cache (done by codex on 2026-10-09; on feat/offline, not merged into main yet)
• Offline sync is done on feat/offline. Merging it into main.
Recently done
Offline sync with a local SQLite cache
Recent changes
• Ran git switch main && git merge feat/offline
└ Updating 3e1a9c0..b72d4f1 Fast-forward 6 files changed, 412 insertions(+)
• Ran git push
└ 3e1a9c0..b72d4f1 main -> main
In the terminal, beside the agent
You don't have to open a browser to see the lists. hamloy panel splits your
terminal (tmux, Zellij, iTerm2, WezTerm, Kitty, Windows Terminal) and keeps
them drawn next to Claude Code or Codex; in other terminals it opens a window
beside you. In Claude Code you can also turn on the status line, which shows
the task the session is on and how much waits for you:
> Do the streak counter next.
⏺ hamloy - Claim an item (MCP)(key: "B-k3f9")
⎿ B-k3f9@2 claimed by this session
⏺ Writing the streak count for each habit now.
Hamloy ◐ B-k3f9 Streak counter on the… 2 for you · 5 ready
How should a shared streak look?
claude · 2d agoWhich sign-in should Pebble have at launch?
claude · 5d agoThe status line is Claude Code's alone; Codex has none.
Two sessions, two tools
Most solo developers soon run a second session: one on a feature in a worktree, one fixing something on main, or Codex beside Claude Code. That's when claims matter. The second agent is refused the task the first holds and takes the next one. See several agents at once.
Your code stays on your machine
Hamloy keeps what agents write to the lists, and where they work: the computer, the folder, the repo, the branch and the names of the files they edit. Never the files themselves. A project exports as a ZIP of plain Markdown files at any time.
What it costs
Free is one project for you alone, with every feature: the program, git, the panel, the status line, every app. Pro is €8 a month or €80 a year for unlimited projects (pricing).