A chat you never leave the keyboard for
Shortcuts, history search, and the rule that every common action must be reachable without a mouse. The interface details behind a chat that stays out of the way.
AgentJam Team3 min read

The fastest chat interface is the one you stop noticing. You type, you read, you type again. Every time your hand leaves the keyboard to find a menu, the interface has interrupted the conversation.
AgentJam has a short list of rules for staying out of the way. This post is that list, with the reasoning behind each rule.
Every common action has a shortcut
| Action | Shortcut |
|---|---|
| Search conversation history | Cmd K |
| Start a new chat | Cmd Shift O |
| Send the message | Enter |
| Insert a new line | Shift Enter |
Two of these deserve a note.
Enter sends. Chat is a conversation, and conversations are made of short turns. Enter to send is the natural default. Shift Enter is there for the occasional multi-line message, and the composer shows both hints under the box so nobody has to guess.
Cmd K opens history. It is the shortcut most developer tools use for “find,” and history search is a find. The menu lists conversations by recent activity with a relative time next to each, so “the thing I asked yesterday” is two keystrokes and an arrow away.
Shortcuts are shown where you would look
A shortcut nobody knows about is decoration. Every button that has a shortcut shows it in the tooltip, and the history menu repeats its own shortcut in the header. The Kbd component renders the keys as small glyphs so Cmd, Shift, and Enter look like keys rather than words.
<InkTooltip text="Chat History" shortcut={["cmd", "k"]} asChild>
<Button variant="ghost" size="icon-sm" aria-label="Chat history" aria-keyshortcuts="Meta+K Control+K">
<ClockFading />
</Button>
</InkTooltip>The aria-keyshortcuts attribute tells assistive technology the same thing the tooltip tells sighted users. Discoverability should not depend on hovering.
Titles are written for you
Naming a conversation is friction, so nothing asks you to. The first exchange generates a short title, and it appears in the header and the history menu within a second of the first answer. When you come back later, “Postgres index tuning” is much easier to find than “New Chat 14.”
Focus never gets lost
A few rules keep the keyboard flow intact:
- After sending, focus returns to the composer. You can start the next message immediately.
- When the history menu opens, focus moves into it; arrow keys navigate, Enter selects, Escape returns to where you were.
- The stop button takes the send button’s place while a response streams, so the same position on the screen always means “the thing I press next.”
The mouse still works
None of this removes pointer support. Buttons are buttons, menus open on click, files drag and drop. The rule is that the keyboard path exists and is at least as fast. Most people find it a week in and never go back.
Try it
Open the chat, press Cmd K, pick an old conversation, press Escape, then type a follow-up and press Enter. If your hand touched the mouse, tell us where.