← The Lab

BUILD NOTES / AGENT OFFICE

I Gave My AI Agents an Office

Six buttons, six agents, and a manager named Scout.

September 5, 2026 · Mike Cornelia

I got a Creator Micro 2 keyboard for controlling my agents. Then I asked for a little office where I could watch them work. Things escalated. There are brass nameplates now. Also a coffee machine.

The result is Agent Office: a local browser view that turns six pinned Codex tasks into six distinct characters. It shows who is working, who needs me, and what is ready. Scout, our manager, can even make rounds between the desks.

We built it with Codex and published the complete project on GitHub. Naturally, the agents building the office all get desks in it.

A glance at the team

When several tasks are running, I want to know who is working, who has finished, and who needs me. The office gives those states a place and a face.

  • Blue: work is underway.
  • Amber: the task needs my response or approval.
  • Green: work finished, with an unread update.
  • White: the task is idle.
  • Red: an error was observed.

Each state also has a text label. When live status is unavailable, the office says so.

Get Agent Office on GitHub →

A live Agent Office with a whiteboard in the upper-left corner, desks one and two in the upper middle, a coffee machine in the upper-right corner, desks three through six below, and panels for current work, approvals, and completed results.
Our office on the Mac mini. The desks match the six physical Agent Keys; the local app updates as tasks change. Select the image to enlarge it.

It started with six buttons

The keyboard made switching between agents feel tangible. Press an agent key, give that task some work, then move to the next one. I wanted the screen beside it to make the same team easy to follow.

A Codex Micro keyboard on a dark desk, with six illuminated Agent Keys, a dial, and dedicated command buttons.
Codex Micro, with six illuminated Agent Keys and dedicated controls. Select the photo to enlarge it.

We chose Pinned chats for the Agent Keys. That follows the first six pinned tasks, so our named team stays on familiar buttons until we deliberately reorder it. OpenAI documents the supported Micro hardware, key assignments, and status lights in its Micro guide.

Agent Office reads that pinned roster and puts the names on the desks. Rename a task and its nameplate updates. Reorder the pins and the key numbers change; each character stays attached to its task.

The office now mirrors the keyboard’s physical layout. Desks 1 and 2 sit in the upper middle; desks 3 through 6 run across the bottom. The unused upper corners became a whiteboard and a coffee station. No coffee, no workee.

The desktop app handles the physical keyboard and its lights. Clicking an illustrated key—or pressing 1 through 6 while the page is focused—spotlights that agent for inspection, but it does not switch the active Codex task. You can use Agent Office with an ordinary keyboard and mouse.

I also prototyped having a physical Agent Key trigger the office spotlight. The current Codex desktop app does not expose a dependable external event confirming that a key actually changed tasks, so I left that connection off instead of occasionally highlighting the wrong desk. The prototype and test notes are in the repository.

Meet the team

These are the names and roles I gave our six pinned tasks. Your office uses your own roster.

KeyAgentDesk title
1ScoutMr Manager
2BoltProduct SWE
3PixelAI Art Curator
4EchoComms
5AtlasTravel Agent
6NovaPick up player

They have different colors and little visual details. While a task is working, its character can move between its desk, the whiteboard, and the coffee machine. They use the center corridor instead of cutting through somebody else’s desk. The motion is illustrative: a trip to the whiteboard does not tell us which tool the agent is using.

One useful correction came when Nova was waiting for my answer but still appeared blue. Echo connected the office to the desktop’s waiting states, so a task needing input now turns amber. That mattered more than another animation. A busy-looking character should not hide a question I need to answer.

The parts that make it useful

The characters are fun. The information around them is what keeps the office from becoming a very elaborate screensaver.

A live job whiteboard

The board shows each agent, the assignment Scout is tracking, and its actual stage: ready, researching, building, testing, waiting, or complete. It answers the first question I have when several jobs are moving at once: who is doing what?

A “Needs you” tray

Questions and approvals collect in one amber tray with the agent’s key number. They stay there until the decision is resolved, so a request does not disappear just because another task got busy.

A results shelf

Finished work leaves a folder on the shelf. Selecting one reveals a short summary and any safe links the manager recorded, including files or published work. It is a small thing, but it gives “done” somewhere to go.

Giving Scout a real job

Once Scout had “Mr Manager” on his desk, I asked whether he could actually coordinate the others. We gave that existing task a specific assignment: check the team every ten minutes, advance routine next steps on jobs I have already authorized, and bring blockers or decisions back to me.

Scout establishes a baseline for old idle tasks and leaves actively progressing work alone. An unchanged situation should stay quiet. I can also ask, “Give me the office report” or “What’s waiting on me?”

Then came the speech bubbles. When the office observes Scout checking a teammate’s status or sending a follow-up, he picks up his clipboard, walks through the center corridor to that teammate’s desk, and pauses beside them. Bubbles appear above the characters with labels such as “Checking in” and “Following up.” They follow the characters and fade away. The labels represent recent observed actions; private conversation text never appears in the bubbles.

This manager workflow is optional and configured separately. Running the viewer alone does not create a schedule or send instructions to your tasks. Recurring manager checks need the Mac and Codex running and use your normal Codex usage.

Run your own office

The current version runs alongside the Codex desktop app on the same Mac. You need Python 3.9 or newer, Git for the clone command below, and a modern browser. The server uses Python’s standard library, so there is no package-install step.

  1. Open Codex and pin up to six tasks. Give them names you will recognize.
  2. In Terminal, download the project and start its local server:
git clone https://github.com/mcornelia/agent-office.git
cd agent-office
python3 server.py

Open http://127.0.0.1:4318/ in your browser. That address opens the server on your own Mac. Keep the Terminal window running; press Control-C there to stop it. On later visits, the included Start Agent Office.command file provides a double-click launcher.

If you have a compatible Micro keyboard, select Pinned chats in its device settings to align the physical Agent Keys with the office roster.

Add a manager when you want one

With your manager in the first pinned position, run this from the project folder:

python3 manager/configure.py --manager-key 1

This prepares a private roster and manager brief. Then follow the manager setup guide: open the chosen task, have it read the generated brief, and explicitly ask it to coordinate the team and create the recurring check. Review its first office report to make sure it understands the assignments.

Give it a desktop home

The optional Mac app adds a menu-bar launcher, a regular office window, and a clean fullscreen presentation mode. Presentation mode removes private job details before they leave the local server—not just with CSS—so the office can sit on a shared screen without displaying task titles, links, or manager messages. Start at Login is optional and off by default. The desktop setup guide has the build and install commands.

Put it on the LAN

Ours is available at https://glyph.local:4318/ from devices on our trusted home network. The repository’s LAN HTTPS guide uses Caddy as the only network-facing listener while the Python server stays bound to 127.0.0.1. Use your own hostname, and install Caddy’s local root certificate on each device that should trust it.

Small enough to understand

The interface is plain HTML, CSS, and JavaScript. A small Python server reads local pin metadata, task events, desktop status, and the manager’s privacy-filtered job ledger, then updates the office about once a second. It serves on 127.0.0.1 by default.

The webpage receives names, status, and limited activity metadata. Generated task mappings and manager history stay in ignored local files. The server has no write API. The viewer needs no analytics service or separate cloud backend; Codex itself still uses its normal online services.

Current compatibility: this version uses observed local Codex data formats, including an internal desktop status stream. Those can change as the app evolves. The project documents macOS support as tested in September 2026; remote hosts, cloud tasks, and Windows are outside this version’s supported setup. See the repository’s compatibility notes for updates.

I like projects that make the tools I already use easier to live with. Our family AI chatbot brought an assistant into Messages. Agent Office gives the work happening on the Mac a visible home.

It started with a keyboard. Now Scout has a management job, completed work has a shelf, and everyone has a nameplate. The office is open on GitHub if you want to give your own team a place to work.