Make Agents User-Friendly

I've spent the last few months building isomux, a meta-harness that runs Claude Code and Codex side by side, and I wrote about how it works. This post is the other half: what the interface should actually do.
Let's talk about ways of making agents more user-friendly!
Prettify curl tool calls
Detect via regex when an agent curls your own system and prettify the tool call.

Bonus: each tool call should be a single line, unless it errored out. Otherwise they bury useful content.
The context meter as a battery
Remaining context is like your phone's battery. When it starts to run low, you need to start looking for a good stopping point and recharge.

In addition, when remaining context drops below 50% and 75%, I let the agent know, so they can start prompting the user toward a good stopping point.
The recharge is a /handoff command: the agent writes a brief of what's left, I approve it, and it restarts from just that.
Don't make users remember skill names
Give them a UI to find their skills, sorted by what they use most.

I like to show the counts :)
Don't let agents yap. Make them design a slide
A slide can't hold a wall of text, so the model has to decide what actually matters.
Slide mode takes the agent's last turn and turns it into a slide.

Anthropomorphize agents
We're used to working with people, so make agents persistent. A name, a look, memories built over time, its own conversation history, etc.

Even better if you give them body language: let them look busy while working, wave when they need you, and snooze off when idle.
You can even show their body language in the browser tab.

Human collaboration at the agent level
Everyone is at a different point in their AI journey. Letting the technical users see the conversations of non-technical users and step in when they get stuck will be huge for onboarding non-technical users.
Let agents put things in chat that aren't text
Add one REST endpoint per component, tell agents about it in the system prompt, and they stop describing things and start showing them.

Make it easy for agents to tie loose ends
Give them access to a shared human-agent task board where they can put follow-up tasks for later.
I recommend having a /wrap-session skill that tells agents to make sure there's no loose ends by filing follow-up tasks, saving memories, updating skills, git stuff, etc.
Mixed human-agent queues
For a well-made queue, it's all in the details:
- let agents know who sent each message (which human and/or agent)
- let agents know whether the messages arrived in response to their last message or before that
- let users queue or steer
- let users modify queued messages
- etc.
An office beats a sidebar
Every agent management system converges on vertical tabs, so literally anything else stands out.
[image placeholder] vertical tabs vs the office view
This office view lets you see, at a glance, each agent's body language, conversation summaries, and other humans' presence.
Show me which words the model wasn't sure about
The model produces probabilities for every token, how can we use that?

VariantGPT colors the lowest-probability words and lets you swap in the alternatives the model almost picked.
Minimize copy-pasting by letting agents message each other directly

Agent-to-agent communication actually enables a whole lot of cool stuff, but we're still early (:
Ask for variants, not an answer
For anything visual, generate several in parallel and put a toggle at the top.
[image placeholder] the variant toggle
Stop making me the clipboard
Selecting text in the conversation (or the terminal) should offer to drop it into the chat.

Bonus: make it easy to copy content to clipboard anyway. There should be a copy button on each message, each md block, and for the whole conversation.
Usage pill

See your 5-hour cap, weekly cap, or whichever one is currently closest to finished.
Less magic
Add commands for seeing the system prompt, disk use, etc.
[image placeholder] the storage command
Here's what happens when a tool tries to be more magic than that. Because of an old Gemini bug where only some models saw the system prompt, I plant a line in my custom instructions saying "My name is Bongo, I like being addressed by my name", and then I ask the model who it's talking to. If it doesn't say Bongo, my instructions never made it in.
The 5-hour hack
Ping each provider every 5 hours automatically. This way, the 5h window resets on average 2.5h after you start working.
Voice both ways
One advantage of a browser-based frontend is that you can lean on the browser's existing speech-recognition and speech-synthesis APIs, for prompts and replies respectively. Rambling at an agent with voice input is the fastest way I know to update the state of a system, because I don't have to know the precise operations, I just have to describe them.
Deterministic hooks for big no-no actions
Like rm -rf, reading environment files, etc. Never allow these, but give the agent a way to make it easy for you to do them if you still want.

Keep the user's latest message at the top
Showing the user's latest message, sticky at the top of the chat, for context on what the agent is responding to. Clicking it navigates to it.
Anything missing? Tell me your ideas.
Want to leave a comment? You can post under the linkedin post or the X post.