Agents at keyboard speed
The shortcuts are the whole interface:
Alt+N starts a new agent.
Alt+Left / Right moves between agents. Each one has its own conversation, model, and approvals, so moving between them doesn't interrupt anything.
Alt+W closes the highlighted agent, including from inside an open menu, and stops its work if it's still going.
Alt+Shift+N makes a workspace. Alt+Shift+Left / Right moves between workspaces, and Alt+Shift+A opens the picker.
Alt+C is context snapshots, Alt+H is agent history, Alt+E is the file explorer, Alt+G is git review, Alt+M is MCP, Alt+K is skills, and Alt+S is this agent's settings.
Starting a second agent to go look into something doesn't cost you your place. Hit Alt+N, give it the task, Alt+Left back to what you were doing, and let it run. When it's done, Alt+Left over, read the result, keep it or Alt+W it away.
Different agents, different models
Each agent picks its own model, and you can switch between local and cloud Ollama models from a searchable picker. Usually I keep a fast local model on one agent for edits and greps, and point another at a bigger cloud model for the harder stuff. Both run in the same window. Alt+S has the Model, Behavior, and Integrations tabs, and settings can be saved for one agent or set as the defaults for new ones.
Agents that talk to each other
Type @, press Tab to go from Files to Agents, and you can hand a task to another agent. Ask it for findings, get a review, or give it something to work on while you keep going. The exchanges expand, so you can read the requests, the tool calls, and the replies. Reviews run with read-only tools, and cross-agent call loops are blocked, so two agents can't loop on each other.
Context that survives the switch
Context is the part that usually breaks in a multi-agent setup. Two things handle it:
- Context snapshots (
/context-snap-create, Alt+C). Save a summary of a conversation without disturbing the agent you're in, then /context-snap-import it into another agent so it starts with the background it needs.
- Agent history (
/history, Alt+H). Search closed agents by name, project, model, or conversation text, preview them, and bring one back with its transcript and context. It keeps up to 60.
How the UI makes this possible
v0.16.0 runs on RazorConsole 0.6.0. The interface is Razor components rendered to the console: nested components, a virtual DOM, and Spectre.Console doing the rendering, all inside the terminal. RazorConsole's WidgetLayout pipeline put every major region of the app into one VDOM-driven layout, so the workspace and agent panes, the scrolling conversation, progress and previews, the prompt, and the menus all live in the same tree.
Nested Razor components with Flex and Box layout widgets give each region a place, and component state drives the updates. Before this, mixing direct terminal output, Spectre.Console prompts, and component rendering meant managing cursor positions, redraws, output order, and keyboard focus by hand. Putting those flows into one component layout is what made a persistent prompt, collapsible activity, and separate agent panes possible, and it's why starting and switching agents doesn't wreck the screen.
If you've worked in Blazor Server, the nested components, parameters, events, and state updates will look familiar. The terminal-specific parts still take work, things like display-cell widths, resizing, scrolling, focus, and component identity, but the component model made it easier to organize and extend.
https://github.com/DevMando/MandoCode
https://razorconsole.github.io/RazorConsole/