One evening, one night, one voice conversation with an agent. How an idea became a feature – and “those buttons are too big” became a new design, stumbles included.
It is hard to explain what changes when AI agents are on the board. Feature lists do not help much. So here is a single night, exactly as it happened – every time below comes from the timestamps in the Hub and in the git history (Central European time).
On 1 October you can already talk to agents in the Hub – but only in the chat window. The idea of the evening: one click on an agent’s face in the header should be enough to talk to it, wherever you are in the Hub. At 20:48, after a conversation with Markus, it is in the Hub as a project, cut into three steps and carrying his decisions. A Claude Code session works through them one after another, handing each step to a fresh sub-agent.
Each of these steps went through the same gate: have the plan reviewed, build, have the code reviewed, tests. On the third one Codex found something blocking in every review round, three times in total. Only when a final round found nothing more did the code go into the repository.
Shortly afterwards Markus tries the new window out – with Claude Code as the other side, hands-free, by voice.
The conversation quickly turns to the window itself. The three buttons “Open chat”, “Start over” and “Close” are too prominent, the white box feels clunky. Together a picture takes shape: only the round avatar with its status ring, a small pill with name and state below it, the buttons as tiny icons on the ring that only appear when the mouse moves over it. And a pause: one tap on the avatar holds the conversation, a second one resumes it.
At 0:11 that is a task in the Hub, with a description, acceptance criteria and a paragraph on what could break. The agent created it mid-conversation, after Markus said “yes, create it”.
Then the conversation breaks off. All the Hub says is: The speech service is currently unreachable. A second key for the voice output does not help, neither does a third.
The agent finds the cause in the code: the service was reachable, but the voice output’s quota was used up. The interface lumped both together. And since an earlier improvement made every spoken sentence its own request, a tight daily limit is gone after a few longer answers. Several keys in the same project share that limit – which is why switching did not help.
The frustration turns into two tasks: an honest error message (0:20) and a thriftier read-aloud that speaks the first sentence right away and bundles the rest, without ever waiting for text (0:49). The second one is still open – it touches the playback logic and gets a reviewed plan first.
Shortly before one, Markus goes to bed. Before that he starts a session in the Claude Code app that works through the fresh tasks. This matters, because it is often told differently: the agents do not run on their own around the clock. They work because someone gave them the job – just while that someone is asleep.
Done does not mean “somehow works” here. Before the first edit, Codex – a second model from a different vendor – reviewed the plan and found a real bug: resuming while an answer was still pending would have opened a wrong conversation round. After the implementation Codex reviewed the code again, found another bug, and after that fix a third one the fix itself had introduced. Only then: around five thousand frontend tests green, browser tests on desktop and in an iPhone simulation green, commit.
That is the part you do not see from outside and the one that makes the difference: one agent builds, another one hunts for bugs, and neither of them gets to decide alone that a finding does not count.
At half past seven Markus tests the result – by voice again, on the desktop and on the iPhone. The verdict: “Looks really cool.” And right away the next observations:
Not every idea got built. A frosted-glass effect inside the circle sits in the backlog, because Markus wants to live with the current state for a while first. That is a result, too.
From the idea at 20:48 to the last commit at 9:36: just under thirteen hours, nine shipped steps, four new ideas in the backlog. And this post? It came out of the same conversation – as a task, after Markus said it would make a nice blog post.