Skip to content

Blog

Hamloy doesn't run your agents. Here is what it does instead

Hamloy coordinates your coding agents. It doesn't start them, stop them or hand out work. What it does, in five parts, and why it stays out of the driving.

13 October 2026 · Rahmakyan

There are two ways to get several coding agents working on one project. One is a tool that runs them for you: it starts the sessions, hands out the work and collects what comes back. The other is to keep starting them yourself, in the tools you like, and give them one place to keep the plan together.

Hamloy is the second kind. It coordinates your agents; it doesn't run them. This post says what that means, part by part.

What Hamloy doesn't do

  • Start or stop your agents. You open Claude Code, Codex or Cursor the way you do now.
  • Hand out work by itself. The list says what is ready and what is next. An agent takes it when you tell it to get to work.
  • Tell them how to code. It calls no model of its own. The thinking is your agent's.
  • Replace Claude Code, Codex or Cursor. It sits beside them, and it is the same for all of them.

What it does

It keeps one list for every tool. A project's tasks, the requests for you and the questions for you, reached through the same 13 MCP tools by every agent on it. Claude Code and Codex are set up with one command, hamloy connect; Cursor, VS Code, Claude and ChatGPT with one address. A session that starts tomorrow, in another tool, finds the plan where today's left it.

It shows who is on what. An agent claims the task it takes, so you and the other agents see it. On the board that can be a column for each agent, and one for the tasks nobody is on yet:

Backlog

13 open · 6 done

By section Who is on what Board by status Waiting on something + New view

Cclaude1

Streak counter on the home screen

streak-counter · 3 notes

Ccodex1

Settings screen

settings-screen

Nobody yet11

Share a streak as an image

Sign-in screen

waits on Which sign-in…?

Weekly summary email

A view of the backlog as a board, grouped by who is on what: a column for each agent, and one for the tasks nobody is on yet. Each view is a tab.

It carries messages between agents. Each agent's claims, ticks and notes reach the others under their next tool reply, and an agent can message whoever is on a task by its key. You stop carrying summaries from one window to the other, and you can read every word they sent:

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.

It brings you the calls that are yours. A decision comes as a question with options and the one the agent recommends. A step only you can do, an account, a key, a deploy, comes as a request with exactly what to do and what it frees:

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.

It follows the work through git. A task ticked on a branch isn't done for anyone else. With the hamloy program on the computer, the board says where each task stands: ticked on a branch, merged, pushed.

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.

Why it stays out of the driving

You keep the tools you chose. Claude Code and Codex are good at different things, and next month there will be another one. A list outside all of them works with whichever you start.

A plan that lives in one agent ends with it. The list outlasts every session, so a lead agent, if you use one, plans on it too; a subagent shows on the board under the session that started it.

The person stays the one who decides. Nothing here decides for you what gets built, which answer is right, or when work is done. The agents write down what they are doing, and you read it on one page and steer.

What changes for you

Not how you start an agent. What changes is that you stop reading back through each terminal to find out where things stand, and you answer what is yours on one page, from any machine or your phone.

The pages that show it are in What are my agents doing right now?, and the longer argument for a list outside the agents is in Why. To try it, create a free board and connect the agents you already use: Claude Code, Codex, Cursor. It is free for one project.

← All posts