Docs/Using Flowly/Terminal UI
Using Flowly

Terminal UI

Bare `flowly` opens the terminal UI β€” a full-screen chat with your agent, with slash commands, live model/provider switching, session history, inline panels for activity and approvals, image/video attachments, and a local shell escape. No browser, no account required.

Running flowly with no arguments opens the terminal UI (TUI) β€” a full-screen chat client that talks to the local gateway. It's the default way to use Flowly on your own machine: everything the agent can do from a messaging channel, you can do here, plus a few terminal-only conveniences (a $EDITOR draft, a local shell escape, live panels).

flowly            # open the terminal UI

If the gateway isn't running yet, the TUI starts one for you and connects to it. To talk to a gateway running elsewhere (a VPS, a service), the TUI connects over the same WebSocket protocol every client uses β€” see Service and Sessions.

Just want a one-shot answer without entering the UI? Use

flowly agent -m "…" instead β€” see CLI commands.

The layout

  • Composer (bottom) β€” where you type. Enter sends; Shift+Enter adds a new line. A header line shows the active model and session.
  • Transcript (middle) β€” your messages and the agent's streaming reply. Tool calls (file edits, shell, search, computer-use) render inline as collapsible blocks so you can watch what the agent is doing in real time.
  • Panels β€” activity log, approvals queue, artifacts gallery, and the subagent sidebar slide in over the transcript on demand (see Panels below).

Sending messages

Type a message and press Enter. The agent's reply streams token by token. While it's still working:

  • Keep typing. Anything you enter while the agent is streaming is queued above the composer and sent automatically when the current turn finishes β€” you don't have to wait.
  • Interrupt. Ctrl+C aborts the current turn (press it again when idle to quit). /abort does the same from the composer.

Slash commands

Type / as the first character to run a command instead of sending a message to the agent. A palette appears as you type; ? in an empty composer prints a quick cheat sheet, and /help (or F1) opens the full help modal.

A few you'll reach for constantly:

CommandDoes
/new (/clear)Start a fresh conversation
/model, /providerSwitch model / LLM provider live (see below)
/sessionsJump to a saved session
/retry, /undoRe-run the last message / pop the last turn to edit it
/compact [hint]Summarize history to reclaim context tokens
/<skill-name>Invoke an installed skill for one turn (e.g. /research)

The full list β€” session, model, tools, permissions, account, and the keybindings β€” lives in Slash commands.

Switching model & provider

/provider and /model open in-flow pickers at the bottom of the screen (an arrow-key list you confirm with Enter). They take effect immediately, mid-conversation, with no restart:

/provider openrouter        # or just /provider for the picker
/model claude-sonnet-4-5    # catalog is live for OpenRouter

/provider <key> switches directly; /provider off clears the pin and lets the cascade choose. See Providers and models for the cascade and the full catalog.

Personas

Switch the agent's persona (its voice and default behavior) with /assistants (alias /persona), or press Ctrl+M for the picker. See Personas.

Sessions & history

Conversations are saved automatically. Press Ctrl+S (or /sessions) to browse and switch between saved sessions. In a single-line draft, ↑ / ↓ walk back through your input history (the messages you've sent), so you can recall and resend a prompt. Quitting with Ctrl+D persists the current session. Full details β€” where sessions live, how history is compacted, resuming β€” are in Sessions.

Editing a long draft

For anything longer than a quick line, press Ctrl+E to open the current draft in your $EDITOR (vim, nano, VS Code, …). Save and close the editor and the text drops back into the composer, ready to send. Handy for multi-paragraph prompts, pasted code, or careful edits.

Attaching images & video

CommandAttaches
/image <path>An image file to the next message (/image clear removes pending)
/pasteAn image from the system clipboard
/video <path>A video for analysis via the video_analyze tool

Attachments ride your next message; the agent sees them alongside your text. See Image generation for the reverse direction (the agent producing images).

Panels

Function keys open full-height panels over the transcript; Esc closes any of them:

KeyPanelWhat it shows
F1HelpEvery command and keybinding
F2ActivityThe live audit log β€” every tool call and result
F3ApprovalsThe pending approvals queue β€” approve/deny shell commands and tools
F4ArtifactsThe artifacts gallery β€” canvases, docs, code the agent produced
Ctrl+ASubagentsA sidebar tracking delegated sub-agents

You can also bring the task board inline with /board, and connect tools/channels without leaving the chat via /integrations, /channels, /mcp, and /plugins.

Shell escape

Prefix a line with ! to run a bash command locally β€” it never goes to the LLM. The output appears as a code block in the transcript (30-second timeout, 4000-character cap):

!git status
!ls -la ~/.flowly

This is for your quick checks; the agent has its own sandboxed shell tool governed by approvals.

Keybindings at a glance

KeyAction
Enter / Shift+EnterSend / new line
↑ / ↓Input history prev / next
Ctrl+EEdit draft in $EDITOR
Ctrl+S / Ctrl+MSessions / personas picker
Ctrl+AToggle subagent sidebar
F1–F4Help Β· Activity Β· Approvals Β· Artifacts
Ctrl+CAbort the run, or quit when idle
Ctrl+LClear the session
Ctrl+DQuit (saves the session)
EscClose a modal/panel

The complete table, including every slash command, is in Slash commands.