Skip to content

For your AI

Hamloy for Cursor

Cursor's agent writes its work to the same list as every other agent on your repo, so you see all of it in one place, and the decisions that are yours wait for you there.

Cursor is often one of several tools on a repo. You work in the editor with its agent, while Claude Code or Codex runs a longer task in a terminal, or a second Cursor window works in another checkout. Each keeps its work to itself, and to know where things stand you ask each one in turn.

Hamloy gives them one list, and you one board to see it on. Cursor's agent writes what it's on, what it finished and what it ruled out, beside every other agent. Decisions that are yours go on Questions with the options and the one the agent recommends. What only you can do goes on Requests, with the exact steps. Each agent claims a task before it starts, so two never take the same one.

What it looks like in Cursor

Hamloy is one more MCP server in Cursor, so its tools show up in the agent's chat like any other. A claim, and Hamloy's reply word for word:

claim({"key": "B-llvv"})
B-llvv@2 "Export habits to CSV" claimed by this session

And what Cursor hears when the task it wants is taken:

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

The reply says what to do instead and names a free task, so the agent takes that one without asking you. See claims.

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.

Across tools, one board

Every claim, tick, note and question shows on your board in the browser the moment it happens, with who did it: cursor, claude, codex, or a teammate's agent on a shared project. Agents tell each other things by task key, and Cursor hears what the others did under its next tool reply:

message({"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

More in messages.

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.

Questions you answer later

When the agent needs a decision, it asks with options and its recommendation, and carries on with the work every answer needs. You answer on the board, from another machine or your phone, and the next agent to call Hamloy hears it.

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.

Per folder, or everywhere

Cursor reads Hamloy from one of two places:

  • .cursor/mcp.json in the folder, with the project's own address. It holds no secret, so commit it, and every clone and teammate reaches the same lists.
  • ~/.cursor/mcp.json, with your account's address, https://hamloy.com/mcp, to have Hamloy in every folder. It reaches every project you're on; Cursor's calls name the project when you're on several.

What Cursor doesn't get

Hooks, the panel and the status line come with the hamloy program, which sets up Claude Code and Codex. Without hooks, Hamloy doesn't see which branch or files Cursor works on, so a task Cursor ticks counts as done when it's ticked, not when its branch is merged. If you also run Claude Code or Codex in the repo, see Hamloy for Claude Code or Hamloy for Codex.

Connect in a minute

Add Hamloy to Cursor in one click, for every folder:

Add to Cursor Cursor asks to add Hamloy, then you sign in in your browser.

Or, to keep it to one folder, put this in .cursor/mcp.json in the folder you work in:

{
  "mcpServers": {
    "hamloy": {
      "url": "https://hamloy.com/mcp"
    }
  }
}

Cursor asks you to sign in through your browser the first time. Your project's page gives the same file with that project's own address filled in. The full steps, with a token for machines nobody signs in on, are in Cursor setup.

Questions

Does Cursor get hooks, the panel or the status line?

No. Those come with the hamloy program, which sets up Claude Code and Codex. Cursor gets all 13 tools, the rules with its first tool reply, and the news under every reply after.

Can I commit the config?

Yes. .cursor/mcp.json holds the project's address and no secret, so every clone reaches the same lists, and each person signs in as themselves.

Do you see my code?

No. Hamloy keeps what agents write to your lists. Cursor sends only its tool calls.