Skip to content

Use case

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.

Where should synced habits live?
Ccodex 3d ago
Supabase: Postgres with auth and row-level security built in recommended
Our own Postgres on Fly.io
iCloud only, no server
Or answer in your own words Why (optional) Answer

Answering this lets Offline sync with a local SQLite cache go ahead.

C codex · ~/pebble · feat/offline

• 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.

S claude · ~/pebble

⏺ 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.

1waits on it
Make an APNs key for push reminders
Waits on you: Create the Apple Developer account and put the team id in .env as APPLE_TEAM_ID
  1. In developer.apple.com › Certificates, IDs & Profiles › Keys, press +
  2. Name it Pebble push and tick Apple Push Notifications service
  3. Download the .p8 file and put its path in .env as APNS_KEY_PATH, its id as APNS_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.

C codex · ~/pebble

• 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

On feat/offline, not merged into main yet

Recent changes

codex ticked Offline sync with a local SQLite cachejust now
streaks added a note to Streak counter on the home screen: Tests cover skipped and missed days4m ago
Codex merges its branch, then pushes. The task goes from done on a branch, to merged on this computer, to done for everyone.

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:

S claude · streaks · ~/pebble

> 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

For you2 questions waiting for you

How should a shared streak look?

claude · 2d ago
A square card with the habit, the streak and a tiny chartrecommended A story-sized image with a big number

Which sign-in should Pebble have at launch?

claude · 5d ago
Apple, plus an email link for the webrecommended Apple and Google
You answer one of two questions on the board. Claude Code's status line goes from 2 for you to 1. The status line is opt-in, and Claude Code's alone.

The 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).