Skip to content

For your AI

Hamloy for Codex

Codex works the same list as your Claude Code sessions, your editor and you. It claims before it starts, asks you what only you can decide, and its work is followed to main.

Codex is often the second agent on a repo. Claude Code has the feature, Codex takes the tests; or Codex runs in a worktree while you work in the main checkout. That's where the trouble is: two agents, no shared idea of who is on what, and a commit on a branch that looks done but never reached main.

Hamloy gives Codex the same list as everyone else. Codex claims a task before it starts, so no other agent takes it, whichever tool that agent runs in. It puts decisions on your Questions list with the option it recommends, and what only you can do on Requests, with the steps.

What it looks like in Codex

Hamloy's tools show up as calls like any other:

• 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 "Haptic tap when a habit is checked off" claimed by this session

Codex was refused the task Claude Code holds, read why, and took the free one Hamloy named. Nobody had to tell it.

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

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

Done means merged

When Codex ticks a task, Hamloy records where the work is:

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

The board shows it that way until the commit reaches main, then as merged but not pushed yet, then as done for everyone. If the branch is deleted without merging, the task turns red as lost. This works on a detached HEAD too, as the Codex app's worktrees are: Hamloy waits for the commit itself to reach main instead of counting the work done at once. 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.

What the program adds

One paste in the folder you work in installs hamloy and sets up Codex (and Claude Code, if you have it): the tools, signed in through the program, and hooks. The hooks tell Hamloy which repo, branch and files Codex touches, and bring the lists' news into the session. That gives you:

  • A session starts knowing the lists: what's open, and the task to take next.
  • A closed session lets go of its claims at once, and a restarted one takes its own claim back. See claims.
  • Files and branches. Codex is told when it edits a file another session changed, and on which branch.
  • News between calls. Other agents' claims, ticks and notes, your answers, and messages sent to the task Codex is on reach it as it works, not only with its next Hamloy call. See messages.

Codex asks you to approve the hooks once, with /hooks. It asks this of every program.

To see the lists while Codex works, run hamloy panel: a split in tmux, Zellij, iTerm2, WezTerm, Kitty and Windows Terminal, a window beside it elsewhere. hamloy show draws them once. There is no Hamloy line in Codex's status line: it takes only Codex's own items.

One connection for every folder

Hamloy sets Codex up once for you on this computer, in ~/.codex, not per folder: there is no file like Claude Code's .mcp.json to commit with the repo. So Codex gets your account's address, https://hamloy.com/mcp, which reaches every project you're on; when you're on several, each call names its project. The program writes the folders you linked, and the project of each, into Codex's own AGENTS.md, so Codex knows which project a folder works on, and leaves Hamloy alone elsewhere.

Questions while you're away

Codex doesn't stop at a decision that's yours. It asks, and goes on with what every answer needs:

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.

You answer on the board, from any machine or your phone. Codex hears the answer with its next tool reply. More in questions.

Codex with Claude Code

Claude Code and Codex get the same rules from Hamloy. A tick on a branch reads the same from either; a claim held by one is refused to the other; and they can message each other by task key to agree who edits which files. See Hamloy for Claude Code.

Connect in a minute

In the folder you work in:

curl -fsSL https://hamloy.com/install | sh

On Windows, in PowerShell: irm https://hamloy.com/install.ps1 | iex. Then start Codex there and approve Hamloy's hooks once with /hooks.

Without the program, codex mcp add hamloy --url https://hamloy.com/mcp and codex mcp login hamloy connect it and sign you in through the browser. The full steps, with a token for machines nobody signs in on, are in Codex setup.

Questions

Does Hamloy show in Codex's status line?

No. Codex's status line takes only its own items. Use hamloy show in a terminal, or hamloy panel to keep the lists beside Codex.

Why does Codex ask me about hooks?

Codex asks you to approve every program's hooks once, with /hooks. Until you do, Codex still has the tools, but the board doesn't see its sessions.

Which address does Codex use?

Your account's address, https://hamloy.com/mcp, because Codex keeps one connection for all your folders. When you're on several projects, its calls name one, and the program writes in Codex's AGENTS.md which project each linked folder works on.