The logo tool
How an agent gives a project its logo from an image in its repo, once you say yes to that file, or takes it off again.
logo sets the project's logo. Its title is Set the project's logo. The
logo shows wherever the project is, in place of its letter: beside its name on
the board, in the list of your projects and on the phone.
Hamloy can't see your repo, but your agent can. So the agent finds the project's own mark, shows you the file, and sets it only once you say yes to that very file.
Arguments
| Argument | Type | What the agent is told |
|---|---|---|
file |
string | the image's path in the repo, the one the human said yes to: a PNG, JPEG or WebP of 2 MB at most (turn an SVG into a PNG of 512 pixels or more first) |
yes |
boolean | true: the human said yes to this very file in this conversation |
remove |
boolean | true: take the logo off again, with the human's yes |
no |
boolean | true: the human said no to the logo you offered; it isn't offered again, but they can still ask for one |
What it does
- With
fileandyes, the reply gives the agent an address to send the image to, good for 10 minutes. The agent sends the file there, and the reply to that says whether the logo is on. - What Hamloy keeps is a new square image made from it, with the whole logo in the middle and none of the file's own metadata.
removewithyestakes the logo off, and the project's letter shows again. That counts as a no too, so no agent offers a logo again.nokeeps your answer, so no agent offers a logo again. When you ask for one later, it is set as usual.- Only the project's owner decides its logo. On a shared project, another person's agent is told so.
When an agent offers one
While a project has no logo, the owner's agent is told once, after it has done what you asked: look in the repo for the project's own mark (an app icon or a brand image before a small favicon, a PNG before an SVG). If there is one, it shows you the file and asks. If the repo has none, it says nothing.
Only an agent that works in a repo is told: Claude Code or Codex in a folder, or an editor. Claude on the web and ChatGPT aren't.
Calls and replies
In Claude Code:
⏺ Done: the streak counter is on the home screen, with tests.
Pebble has no logo on Hamloy yet. The repo has the app's icon,
Pebble/Assets.xcassets/AppIcon.appiconset/icon-1024.png (1024 × 1024).
Make it the project's logo?
> yes
⏺ hamloy - Set the project's logo (MCP)(file: "Pebble/Assets.xcassets/AppIcon.appiconset/icon-1024.png", yes: true)
⎿ Send the bytes of Pebble/Assets.xcassets/AppIcon.appiconset/icon-1024.png to https://hamloy.com/logo/… as the body of an HTTP PUT,
within 10 minutes. The reply says whether it is on, or why not (a PNG, JPEG or WebP of 2 MB at most). Tell the human once it is.
⏺ Bash(curl -sS -X PUT --data-binary @Pebble/Assets.xcassets/AppIcon.appiconset/icon-1024.png "https://hamloy.com/logo/…")
⎿ Pebble has its logo now; its board shows it.
Saying no, in Codex:
• Called hamloy.logo({"no":true})
└ Kept: Pebble isn't offered a logo again. Its owner can still ask for one, or set it on its Settings page; a logo set clears this no.
What it refuses
Ask the human first: show them the file you'd use (assets/mark.png) and call logo again with yes: true once they say yes to it. A logo is never set on your own.
assets/mark.svg is an SVG, which isn't taken as a logo: turn it into a PNG of 512 pixels or more, show the human that, and send it.
logo needs file: the image's path in the repo, the one the human said yes to
Only Dana, who owns Pebble, can change its logo, here or on its Settings page.
The address the file is sent to has one refusal of its own, once its 10 minutes are up:
This address has run out or was never good: ask the logo tool for a new one.
Without an agent
On the project's Settings page, under Logo, the owner uploads one, puts another in its place, or takes it off.