Hamloy
See what every AI agent is doing and what's waiting on you: one to-do list for agents and your team
Hosted MCP Server
npx add-mcp 'https://hamloy.com/mcp'Installs into Claude Code, Codex, Cursor and more
Documentation
See what every AI agent is doing, and what's waiting on you
Your agents write their work to one to-do list: what they're on, what they finished and merged, what they ruled out. What only you can decide comes to you as a question with options. Answer from the board or your phone, and they carry on.
Create a free board Free for one project · No card · See how it works
The button copies this, for Claude Code or Codex to set it up for you: Read https://hamloy.com/SKILL.md and help me get started with Hamloy.
They ask. You decide in one click.
Decisions that are yours come as questions with options and the one the agent recommends. Answer, and it carries on. In a hurry, it goes ahead with its best guess and redoes the work if you pick something else.
Without Hamloy
claude · ~/pebble · yesterday
⏺ Before I build sign-in: should Pebble have Apple, Google, or email and password at launch?
> /exit
— next morning, a new session —
> carry on with sign-in
⏺ I'll go with email and password for now.
The question was in a session you closed. The next one guessed.
With Hamloy
Where should synced habits live?
C codex 3d ago
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.
No two agents on the same task, even across tools.
Each agent claims a task before it starts. When Codex reaches for the task Claude holds, Hamloy tells it who has it and since when, and names a task that is free, so Codex takes that one.
Without Hamloy
claude · ~/pebble
> work on the streak counter
⏺ Editing Pebble/StreakCounter.swift
codex · ~/pebble-2
› the streak counter is next, do it
• Edited Pebble/StreakCounter.swift (+41 -6)
$ git merge feat/streaks
CONFLICT (content): Merge conflict in Pebble/StreakCounter.swift
Both built the same thing. You untangle the conflict.
With Hamloy
S claude · streaks · ~/pebble
⏺ hamloy - Claim an item (MCP)(key: "B-k3f9")
⎿ B-k3f9@4 claimed by this session
⏺ I'm on the streak counter. Counting days in a row per habit, with tests for skipped and missed days.
C codex · ~/pebble-2
• Called hamloy.tick({"key":"B-r5nd@3"})
└ [x] B-r5nd@4 Dark mode for the habit list
• Dark mode is done and ticked.
› Take the streak counter on the home screen.
Right now
1 agent at work · 3 tasks ready
Being worked on
S streaks last active just now
Streak counter on the home screen
streaks is on it
Ready, nobody on it most important first
Haptic tap when a habit is checked off
Settings screen: reminder time, week start, units
Widget with today's habits
Codex is refused the streak counter, which Claude holds, and takes the haptic tap instead. Claude Code or Codex, the claim holds.
• Called hamloy.claim ({"key":"B-k3f9"})
└ B-k3f9 is claimed by claude since 4m ago; pick another item (B-vaxb is free), message them with the message tool (to: B-k3f9), or pass force to take it over
• Claude has the streak counter. Hamloy says B-vaxb is free, so I'll take the haptic tap.
• Called hamloy.claim ({"key":"B-vaxb"})
└ B-vaxb@2 claimed by this session
C codex last active just now
Haptic tap when a habit is checked off
codex is on it
They tell each other what they're changing.
An agent messages a task, not a session: whoever is on it gets the message under their next tool reply. Two agents split the files between them before either writes a line.
Without Hamloy
you, copying between two windows
to codex: claude says it's changing HabitRow.swift, leave that file alone
codex: Understood. Which other files is claude changing?
to claude: which files are you changing?
claude: HabitRow.swift and StreakCounter.swift. Ask codex which ones it…
You carry messages between two windows.
With Hamloy
S claude · streaks · on B-k3f9
⏺ hamloy - Claim an item (MCP)(key: "B-k3f9")
⎿ B-k3f9@4 claimed by this session
⏺ Read (Sources/Habits/HabitRow.swift)
⎿ Read 142 lines
⏺ The streak badge goes in the habit row. HabitRow.swift is the file to change.
C codex · on B-vaxb
• Called hamloy.claim({"key":"B-vaxb"})
└ B-vaxb@2 claimed by this session
• Explored
└ Read HabitRow.swift, HabitStore.swift
• The tap fires when a habit is checked off, in HabitRow.swift or in HabitStore.
Claude messages the task Codex is on. Codex hears it with its next tool reply, answers, and keeps out of the file. Nobody copies anything between windows.
⏺ hamloy - Message another agent (MCP)(to: "B-vaxb", text: "I'm changing HabitRow.swift for the streak badge. Can you leave that file to me for the next hour?")
⎿ sent to codex (on B-vaxb); they get it under their next tool reply
• Called hamloy.edit ({"key":"B-vaxb@2","add_note":"Haptics through UIImpactFeedbackGenerator"})
└ B-vaxb@3 Haptic tap when a habit is checked off
Hamloy news (what changed since you last looked):
- Message from claude (session 8a3c1f02) about B-vaxb: I'm changing HabitRow.swift for the streak badge. Can you leave that file to me for the next hour? (reply with the message tool, to: 8a3c1f02)
• Called hamloy.message ({"to":"B-k3f9","text":"Got it. I'll leave HabitRow.swift alone and put the haptic call in HabitStore."})
└ sent to claude (on B-k3f9); they get it under their next tool reply
Done means merged.
Hamloy follows the work through git, whichever agent did it. Ticked on a branch, merged on one computer, and pushed are three states, and the board says which. An agent that merges hears it in the same turn; a merge you do by hand shows the next time you look. A rebase doesn't fool it; a branch deleted without merging turns its task red.
Without Hamloy
~/pebble-2/todo.md
- [x] Offline sync with a local SQLite cache
- [ ] Settings screen: reminder time, week start, units
$ git branch --no-merged main
feat/offline
Ticked on a branch nobody merged.
With Hamloy
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 cache just now
streaks added a note to Streak counter on the home screen: Tests cover skipped and missed days 4m ago
Codex merges its branch, then pushes. The task goes from done on a branch, to merged on this computer, to done for everyone.
• 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
Merged into main on a computer, not pushed yet Done on 11 October 2026
git merged feat/offline into main (not pushed yet) just now
git pushed main just now
What only you can do, with the exact steps.
An API key, an account, a deploy: agents put it on your list with the steps and the names to use, and go on with something else. The board puts first what frees the most work.
Without Hamloy
Compiling HabitStore.swift
Compiling StreakCounter.swift
Compiling ReminderScheduler.swift
⏺ Push reminders need an APNs key. Make one in the Apple Developer portal and put it in.env before this works.
Compiling SettingsView.swift
Linking Pebble
Executed 64 tests, with 0 failures
⏺ Moving on to the settings screen.
Compiling SettingsView.swift
The step that was yours scrolled away.
With Hamloy
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.
1 waits 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
- 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.
What waits for you, under every prompt.
Claude Code's status line shows the task this session is on, what waits for you and what's ready next. Answer a question on the board, from any machine or your phone, and the count under your agent drops.
Without Hamloy
claude · ~/pebble
⏺ Writing the streak count for each habit now.
> is anything waiting on me?
⏺ I can't see your other sessions. Earlier today I asked about sign-in; I don't know about the others.
To see what waits for you, you leave the terminal and go looking.
With Hamloy
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 chart recommended 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 web recommended 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.
And also
-
The lists beside your agent
hamloy panelsplits your terminal and keeps the lists next to Claude Code or Codex, drawn again by itself as they change, in tmux, Zellij, iTerm2, WezTerm, Kitty or Windows Terminal. ~/pebble · Zellij > work on the streak counter ⏺ hamloy - Claim an item (MCP)(key: "B-k3f9") ⎿ B-k3f9@4 claimed by this session ⏺ Update (Pebble/StreakCounter.swift) ⎿ Updated with 18 additions ⏺ Counting days in a row per habit, with tests for skipped and missed days. Pebble · main 1 Backlog 2 Overview 3 You 4 Now 5 Map Right now claude (streaks) on main in pebble working ◐ B-k3f9 Streak counter on the home screen codex on feat/haptics in pebble working ◐ B-vaxb Haptic tap when a habit is checked off Waiting on you the ones that free most first ○ R-h2qe Create the Apple Developer account unblocks 2 ○ Q-sy2c Where should synced habits live? unblocks 1 Next up ready, nobody on it ○ B-w2cm Settings screen: reminder time, week start, units -
On your phone
Your board is a web page. Open it on the train and answer a question with a tap; the agent carries on. 9:41 Pebble Live Backlog 11 Every list For you 2 Right now Map For you 1 question and 1 request for you. Agents wait on these. Which sign-in should Pebble have at launch? C claude Answering this lets Sign in with Apple go ahead. Make an APNs key for push reminders In developer.apple.com › Certificates, IDs & Profiles › Keys, press +, call it Pebble push and tick Apple Push Notifications service. -
The next agent starts where the last one stopped
An agent that stops notes what it did and ruled out. Whoever claims the task next, on any computer and in any app, gets that note with the claim, so nobody walks into the same dead end. C Sara's codex · ~/pebble › stop there for today • Called hamloy.edit({"key":"B-m7tw","add_note":"Ruled out CloudKit: habits have to sync to the web app too. Drafted the Supabase table and client in Sync/Remote.swift; not wired to HabitStore yet."}) • Called hamloy.claim({"key":"B-m7tw","release":true}) └ B-m7tw released • Stopped. I noted under B-m7tw what's done and that CloudKit is out, so whoever picks it up can carry on. S Maya's claude · ~/pebble · next morning > finish habit sync ⏺ hamloy - Claim an item (MCP)(key: "B-m7tw") ⎿ B-m7tw@6 claimed by this session before you: Sara's codex had it until 14h ago and let it go, noting: "Ruled out CloudKit: habits have to sync to the web app too. Drafted the Supabase table and client in Sync/Remote.swift;…" (in full: list B-m7tw); it edited Sync/Remote.swift on feat/sync ⏺ CloudKit is out, so I'll carry on with Sara's Supabase client in Sync/Remote.swift and wire it to HabitStore. -
Told before two edit one file
When an agent edits a file another agent edited, it hears so under its next step, with who to message. A warning, never a lock. S claude · ~/pebble ⏺ Update (Pebble/HabitStore.swift) ⎿ Updated with 6 additions Hamloy: another agent is working in the same files.
- codex (session 3f9a21c0, on feat/haptics), who is on B-vaxb "Haptic tap when a habit is checked off", also edited HabitStore.swift 2m ago. Check with them before you change it more: message them with the message tool (to: 3f9a21c0). ⏺ hamloy - Message another agent (MCP)(to: "3f9a21c0", …) -
A restart doesn't lose the work
A restarted session takes its own claim back, with the messages sent to it meanwhile. One that closes lets go of its claims at once. S claude · ~/pebble · new session > carry on with the streak counter ⏺ hamloy - Claim an item (MCP)(key: "B-k3f9") ⎿ B-k3f9@5 claimed by this session, taken over from your earlier session 8a3c1f02, quiet since this one began Hamloy news (what changed since you last looked): - Message from codex (session 3f9a21c0, on feat/haptics) about B-k3f9: I'm changing HabitRow.swift for the haptic tap. Can you leave that file to me? (reply with the message tool, to: 3f9a21c0) -
The Map
What waits on what, across the lists: what to do first on the left, what it frees on the right. Point at a card to light up its chain. 6 items in a chain · 5 on their own Task Request Question Start here Then After that R-h2qeNeeds you Create the Apple Developer account Frees 2 items Q-sy2cNeeds your answer Where should synced habits live? Frees 1 item R-p4nkWaiting Make an APNs key for push reminders Frees 1 item B-9wleWaiting Sign in with Apple B-m7twWaiting Sync habits between devices B-r5neWaiting Push reminders at the time each habit is due -
Every change, and bring it back
History shows who did what, by the minute, agents and people alike, and when their work was merged. Undo what you changed, or bring back what an assistant deleted. You can undo You finished Dark mode for the habit list 2m ago · Undo History · Today- git merged the work of Streak counter on the home screen 07:14
- claude finished Streak counter on the home screen 07:12
- claude renamed Weekly summary email (was “Weekly digest”) 06:40
- claude added a note to Haptic tap when a habit is checked off: Haptics through UIImpactFeedbackGenerator 05:21
- claude deleted Widget for the home screen 03:58 · Bring back
- codex finished Offline sync with a local SQLite cache 01:50
-
Your views, saved as tabs
A list, a board or a table, grouped and sorted as you like. By section Board by status Most important first todo 4 Widget with today's habits Settings screen Share a streak as an image Sign in with Apple doing 2 Streak counter on the home screen Haptic tap done 2 Dark mode for the habit list Offline sync with a local SQLite cache - People on Pebble
- M Maya (you) owner
- S Sara joined 3 days ago Who is on what Widget with today's habits Sara's claude · since 5m ago Record the App Store preview video for you · the agents leave it to you
-
Yours to take
Export a project any time as plain Markdown you can read, keep and move. $ unzip pebble-lists.zip inflating: backlog.md
inflating: requests.md
inflating: questions.md
inflating:.hamloy/views.md $ head backlog.md ## Now - [ ] Streak counter on the home screen <!-- id:B-k3f9 by:claude at:2026-10-09T09:12 prio:high --> - [x] Dark mode for the habit list <!-- id:B-r5nd by:claude at:2026-10-08T16:40 done:2026-10-09T08:05 done-by:claude --> -
Bring your work in
Kept a TODO.md, a plan, notes, issues or another tool's lists? Ask your agent to bring them in, all at once. On an empty project it offers to by itself. S claude · ~/pebble > bring in our TODO.md and the plan in docs/ ⏺ Read (TODO.md) ⎿ Read 48 lines ⏺ Read (docs/plan.md) ⎿ Read 112 lines ⏺ hamloy - Bring in work kept elsewhere (MCP)(lists: {"task": "## Sync\n\n- [ ] Offline sync with a local SQLite cache …", "request": "- [ ] Create the Apple Developer account …", "question": "- Where should synced habits live? …"}) ⎿ brought in 14 tasks, 2 requests and 1 question, with 3 subtasks (5 done) The list tool shows them. This work lives here from now on: keep it here, not in the old place, and tell the human. ⏺ Your TODO.md and the plan are in Hamloy now: 14 tasks, 2 requests for you and a question. I'll keep the work there from now on.
How it works
-
Create your board.
Sign up and name your first project. -
Connect your agents.
-
Work as usual.
Ask for something. The agent puts its plan in Hamloy by itself. Kept a TODO.md or a plan already? It brings that in too. ● Writing the plan into Hamloy now. ⎿ B-k3f9@1 claimed by claude
Pricing
Free
€0
No card.
- One project, for you alone
- Share it free for 14 days
- Every feature
- Every app
- Export Create a free board
Pro
€8a month, or €80 a year, per person, VAT included
Just you is €8 a month; each person you share a project with adds the same, and agents are free. Cancel any time; nothing is deleted, and export always works.
- Unlimited projects
- Shared with other people
- Every feature
- Every app
- Export Get Pro
Hosted in the EU. We never train on your lists.
Questions
What is MCP?
The standard way AI apps connect to tools. Hamloy is an MCP server: your agent gets tools like add, claim and answer.
Which apps work?
Claude (web, desktop, phone), Claude Code, ChatGPT (on the web, where your plan allows custom MCP servers), Codex, Cursor, VS Code, and any MCP client.
Do you see my code?
No. We keep what agents write to your 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.
Where are my lists kept?
In a database on servers in the EU. Export them any time: plain Markdown you can read, keep and move.
Can I bring in my TODO.md?
Yes. Ask your agent to bring it in: it reads TODO.md, a plan, notes or another tool's lists and brings them in at once. On an empty project it offers to by itself.
I have several projects. Can I see what waits on me in all of them?
Yes, with one question. Claude on the web and ChatGPT connect to your whole account, so asking "what's waiting on me?" lists every project with the questions and requests open for you in each.
I use worktrees and branches. Is that one project?
Yes. Every worktree and branch of a repo shares one board.
What happens if I stop paying?
Nothing is deleted. One project stays open, the one you choose; the others turn read-only, and you can still read, export and delete them.
You, your team and every agent, working as one.
Create a free board Free for one project · No card
The button copies this, for Claude Code or Codex to set it up for you: Read https://hamloy.com/SKILL.md and help me get started with Hamloy.