---
title: Agent J: logo and dancing robots
nav: Background robots
summary: The ivory-faced official logo, five state colours, and 16 dancing robots with their pixel-art design rules.
order: 32
---
# Agent J: logo and dancing robots

![Bluey dancing, then taking a bow](hero.gif)

Sometimes a few little pixel robots dance at the top right of the reply card on the phone page. **One robot is one Agent working for you in the background**: a workflow CEO, or a helper the main Agent sent out. Whether the main Agent runs on Claude Code, Codex or OpenCode, every sub-agent it sends out becomes one of these robots. As many robots as are dancing, that many Agents are at work.

They only tell you that something is busy in the background; you cannot start or stop work with them.

The robots stay while the main Agent is not replying: they show the work in the background, not the main Agent itself. Sub-agents Claude Code sends out with its Agent tool and commands it runs in the background appear by themselves; a background session the Agent starts on its own (`claude -p`, `codex exec`, `opencode run`, …) appears once it is registered with `agentj busy run`. Work running with no robot means it was not registered — ask the Agent to wrap it in `agentj busy run`. On a Mac, launchd jobs named `agentj-p<number>…` show too, like the systemd units of that name on Linux.

## How they come and go

- **New work**: a new robot pops up and joins the dance.
- **Work done**: that robot takes a bow and floats away; the others close up.
- **One piece of work keeps the same robot from start to end.** A workflow CEO that shows up often gets its own robot again whenever it can, so you can tell who it is by the colour.
- With reduce motion turned on in your phone's settings, the robots stand still and come and go without animation.
- When the computer is disconnected, the robots are put away with the rest of that row.

## How many are shown

- On a phone, at most **6** stand side by side; beyond that the last spot shows +N, so the name and time are never covered.
- On a wide screen such as a desktop browser, a powerful computer that can run more background Agents at once can show up to **12**. How many it can run is worked out live from its cores, load and free memory (the same rule Agent J uses to decide how many background Agents to start), not a fixed number.
- Tap the robots and a square opens in the middle of the screen: how many Agents are at work, who is watching them for you, and **all of them** listed — each row its robot, who, and what it is doing. "Change the look" at its bottom sends the Agent a message from you asking to customize the look; it asks what you want and applies the theme only after it validates. Pressing and holding the robots does the same. ESC or a tap outside closes it.

## Opening one

Every row in the square can be tapped. It opens that Agent's own card: its robot on top, then who, the whole task title, where it runs (a Claude Code, Codex or OpenCode sub-agent, a background dispatch, a background command, a workflow), how long it has been working, and:

- **Latest step**: the step the sub-agent just took — the command it ran, the file it is reading. While the card is open it refreshes every few seconds.
- **Report**: a background dispatch shows where its report file is and the report's first line; before it exists the card says "Not written yet".

The card is only for looking; it cannot stop or change the work. "Back" returns to the list; if the work finishes while you look, the card says "Done". With an older Agent J on the computer the card shows only what the list already knows.

## Gallery: the 16 robots

All original pixel art drawn for Agent J: 12 × 12 pixels, 12 dance steps plus a bow. Only colours from the Agent J palette; every robot has its own colours and its own mix of antenna, eyes and badge. Shown enlarged, with hard pixel edges.

| Robot | No. | Name | Colours and looks |
|---|---|---|---|
| ![Bluey](robot-r00.gif) | 1 | **Bluey** | Milky Waves · light antenna · dot eyes · light badge |
| ![Wisteria](robot-r01.gif) | 2 | **Wisteria** | Somewhere in a Fairytale · no antenna · dot eyes · light badge |
| ![Berry](robot-r02.gif) | 3 | **Berry** | Strawberry Field · dark-tipped antenna · dot eyes · light badge |
| ![Latte](robot-r03.gif) | 4 | **Latte** | Lama · coloured antenna · dot eyes · light badge |
| ![Candy](robot-r04.gif) | 5 | **Candy** | Elastic Pink · light antenna · visor · light badge |
| ![Apricot](robot-r05.gif) | 6 | **Apricot** | Buttery · no antenna · visor · light badge |
| ![Lemon](robot-r06.gif) | 7 | **Lemon** | Pasta Luego · dark-tipped antenna · visor · light badge |
| ![Sprout](robot-r07.gif) | 8 | **Sprout** | Sage Sensation · coloured antenna · visor · light badge |
| ![Glacier](robot-r08.gif) | 9 | **Glacier** | Cold Blue · light antenna · dot eyes · coloured badge |
| ![Storm](robot-r09.gif) | 10 | **Storm** | Windstorm · no antenna · dot eyes · coloured badge |
| ![Carpet](robot-r10.gif) | 11 | **Carpet** | Magic Carpet · dark-tipped antenna · dot eyes · coloured badge |
| ![Jade](robot-r11.gif) | 12 | **Jade** | Emerald Oasis · coloured antenna · dot eyes · coloured badge |
| ![Peach](robot-r12.gif) | 13 | **Peach** | Peachy Feeling · light antenna · visor · coloured badge |
| ![Banana](robot-r13.gif) | 14 | **Banana** | Banana Republic · no antenna · visor · coloured badge |
| ![Silver](robot-r14.gif) | 15 | **Silver** | Elephant in the Room · dark-tipped antenna · visor · coloured badge |
| ![Sunset](robot-r15.gif) | 16 | **Sunset** | Strawberry Field · coloured antenna · visor · coloured badge |

The first 9 robots match the 9 dot colours used before, so a CEO keeps its colour as a robot. When more than 9 work at once, the other 7 join in.

## Make your own robots {#make-your-own}

The robots are part of the [theme](/docs/theme/), so you can draw your own — or simply ask your Agent J: "draw me four
robots in our brand colours", "make the robots wear hats". It knows these rules and checks the result before it goes live.

**What a robot set is:** 1 to 16 robots, each with a name (Chinese ≤ 6 characters, English ≤ 12 letters), drawn twice as
pixel art and saved as two PNG sprite sheets. One row per robot, top to bottom; **13 frames** across each row:

| Frames | What |
|---|---|
| 1–12 | the dance, one step every 0.2 s (a 2.4 s loop) |
| 13 | the bow, shown when its work is done, before it floats away |

| Sheet | One robot | Shown | Size of the sheet (N robots) |
|---|---|---|---|
| `sheet_18` | 18 × 18 pixels | 18 px high, in the reply card | 234 × 18·N pixels |
| `sheet_12` | 12 × 12 pixels | 24 px high (2×), in the list you get by tapping them | 156 × 12·N pixels |

**Pixel-art rules** (the check refuses anything else):

- every pixel fully clear or fully opaque — no anti-aliasing, no soft shadow; the background clear;
- at most 8 colours per robot; no empty frame; each sheet at most 32 KiB;
- the same size in every frame, feet on the bottom rows, so it dances on the spot.

**Easiest start:** take a copy of the factory robots and change them — colours, antenna, eyes, badge:

```bash
agentj theme export robots ~/agentj-themes/my-robots
```

That folder holds the two factory sheets (`robots-12.png`, `robots-18.png`) and a `theme.json` that names all 16 robots.
To make the 18-pixel robot from the 12-pixel one, draw the same 6 columns and 6 rows twice in every frame (that is how
the factory robots are made, and it keeps the eyes square) — or draw it at 18 × 18 directly.

The part of `theme.json` for the robots:

```json
"busy": {
  "style": "robots",
  "robots": {
    "sheet_12": "my-robots-12.png",
    "sheet_18": "my-robots-18.png",
    "names": [ { "zh": "小橙", "en": "Tangerine" }, { "zh": "小灰", "en": "Pebble" } ]
  }
}
```

Then check and switch on (the phone repaints within seconds):

```bash
agentj theme validate ~/agentj-themes/my-robots
```

```bash
agentj theme apply ~/agentj-themes/my-robots
```

If a frame is empty or a pixel is half transparent, the check names the robot and the frame. When there are fewer
robots than Agents at work, the robots repeat.

## Prefer the dots? {#dots}

The round dots from before are the other factory look: one dot per Agent, softly blinking, no dancing.

```bash
agentj theme apply dots
```

Back to the robots: `agentj theme reset`. A theme can also bring its own dot colours (1–9 pairs). All rules and the
other parts of a theme (colours, logo, Send icon): [your own look](/docs/theme/).

How to use the rest of the page: [User guide](/docs/manual/).

## Official logo specifications {#official-logo}

02-ivory uses a 16 × 16 master: Lotion #faf9f5 face, Banana Republic #ffe292 antenna, Noir #2c2b26 eyes. State bodies: idle #629887, working #6a9bcc, approval #d97757, question #827dbd, offline #858585. The optional disc is Salt #f0eee6; demonstration surfaces are Lotion #faf9f5 and Sooty #141414. Every colour comes from the approved 37-colour palette. Pixel opacity is 0 or 255; scale by whole numbers.

The round header icon and footer share one appearance setting: Auto → Light → Dark. The site remembers your choice; Auto clears the manual override and follows the system.
