Inside the Flowly TUI, type / to run a command instead of sending a message to the agent. Type ? in an empty composer for a quick cheat sheet, or open the full help modal with /help (or F1).
Session
| Command | What it does |
|---|---|
/clear or /new | Reset the conversation (gateway-side, asks confirmation). /clear --yes skips the prompt. |
/retry | Re-submit the last user message (drops the stale assistant reply). |
/undo | Pop the last user + assistant turn; pre-fills the composer for edit-and-resubmit. |
/compact [hint] | Summarize history to save tokens. |
/sessions | Switch to a saved session. |
/status | Show the current model + session. |
/abort | Cancel the current turn. |
/quit | Exit. |
Standing goals
A standing goal keeps the agent working across turns until it is achieved, needs you, or exhausts its budget. Setting one starts the work in the same turn.
| Command | What it does |
|---|---|
/goal or /goal status | Show the current goal, its status and turn budget. |
/goal <text> | Set (or replace) the goal and start working immediately. Inline verify: / constraints: / boundaries: / stop when: lines become its completion contract. |
/goal draft <text> | Draft the completion contract first, then set the goal. |
/goal show | Show the goal with its full completion contract. |
/goal pause / /goal resume | Pause the loop (stays resumable) / resume and reset the turn budget. |
/goal clear (/goal stop, /goal done) | End the goal for good. |
/goal wait <pid> [reason] / /goal unwait | Park the loop on a process / release it. |
/goal gate [list | add <cmd> | remove <n> | clear] | Manage quality gates — commands that must pass before the goal may be judged done. |
/subgoal [<criterion> | remove <n> | clear] | Manage extra completion criteria the judge factors in. |
Pausing or ending a goal also stops the goal turn that is streaming at that moment. A turn you typed yourself is never stopped by these commands.
Model & persona
| Command | What it does |
|---|---|
/provider | Pick the LLM provider (arrow-key picker). /provider <key> switches directly; /provider off clears. |
/model | Pick a model from the active provider's catalog (live for OpenRouter). |
/assistants (/persona) | Pick a persona / assistant. |
/theme | Switch the TUI theme. /theme mono switches directly. |
Tools & integrations
| Command | What it does |
|---|---|
/integrations | Connect external services — Home Assistant, Linear, Trello, Google Workspace. |
/channels | Configure messaging channels — Telegram, Slack, Discord, Email, iOS/Web. |
/mcp | Manage MCP servers — enable / disable / remove, install from the catalog. |
/plugins | List installed plugins (bundled + user) and toggle them. |
/browser | Toggle the browser_tab tool; shows the Chrome extension link + live status. |
/computer | Explains that computer use (desktop control) needs the Flowly Desktop app — the terminal can't hold the required macOS permissions. |
/image <path> | Attach an image to the next message. /image clear removes pending images. |
/video <path> | Attach a video for analysis via video_analyze. |
/paste | Attach an image from the system clipboard. |
/skills [filter] | Search and manage skills the loader knows about (read-only; optional substring filter). Works in the CLI + gateway. |
/learn [--dry-run] [source] | Create or update a reusable skill from paths, URLs, notes, or the current conversation. |
/codex [on|off|sandbox|cwd|tools] | Manage the opt-in Codex runtime live (no restart). |
/<skill-name> | Invoke an installed skill for one turn (e.g. /research). |
/learn
Create or update a reusable skill from source material you provide:
/learn [source]
/learn --dry-run [source][source] can be a local path, directory, URL, pasted notes, or a phrase such as
"what we just did". With no source, Flowly uses the current conversation as the
material to distill.
Examples:
/learn the release checklist workflow from this conversation
/learn ~/work/internal-sdk/docs/auth.md
/learn https://example.com/api-guide and these notes: ...
/learn --dry-run ./runbooks/customer-escalation.mdNormal mode saves the skill through skill_manage: it lists existing
agent-authored skills to avoid obvious duplicates, creates or updates the skill,
writes supporting files when needed, and verifies the result. New or updated
skills appear in the TUI slash palette automatically after a successful
skill_manage or skill_improve write in the active session.
Dry run mode previews the same plan without writing. It may inspect sources and
list existing skills, but it must not call persistent skill_manage actions
such as create, patch, edit, write_file, or delete. The reply includes
the proposed skill name, create/update decision, full SKILL.md draft,
supporting file drafts, verification check, and the command to run when you want
to apply it.
Short alias: -n is accepted as a dry-run flag.
Permissions & activity
| Command | What it does |
|---|---|
/permissions (/policy) | Edit command permissions (security / ask / allowlist). |
/plan [task|on|off|status] | Plan mode — the agent proposes a plan and waits for approval before acting. Bare /plan toggles the standing mode; see below. |
/memory (/review) | Review the bot's pending memory candidates inline — keep / discard them one at a time. Pops automatically on open when the review queue is non-empty; Esc dismisses it until you re-enter the TUI. |
/approvals | Open the pending approvals queue (or F3). |
/activity | Open the activity / audit log (or F2). |
/artifacts | Open the artifacts gallery (or F4). |
/subagents (/subs) | Toggle the subagent sidebar. |
/board (/kanban) | Show the task board inline; /board run|done|cancel|del <id>, /board add <title>, /board clear. |
/plan
Turn on plan mode: the agent decomposes the task into steps, shows you the plan, and runs no side-effecting tool until you approve it.
/plan # toggle the standing mode on/off
/plan on # turn it on
/plan off # turn it off AND abort the active plan
/plan status # is it on? what's the active plan's progress?
/plan <task> # plan THIS task only, without entering the standing modeBare /plan is a mode, not a one-shot: while it's on, every message plans
first. It's the same mode Shift+Tab cycles to (▣ Plan), and it works on
every surface that sends text — the TUI, Desktop, iOS, and chat channels.
Approving a plan ends the mode — the work runs under whatever permission
level was underneath, and the next message is a normal one. Rejecting or
revising keeps you planning.
/plan <task> is the exception: it forces plan-first for that message only.
Aliases: /plan stop and /plan cancel behave like /plan off; /plan ?
behaves like /plan status.
Account
| Command | What it does |
|---|---|
/login | Pair this machine for iOS access. |
/logout | Unpair (disable iOS access). |
/whoami | Show pairing status + account info. |
Keybindings
| Key | Action |
|---|---|
Enter | Send message |
Shift+Enter | New line in the draft |
Shift+Tab | Cycle the permission level: 🔒 Ask → ⚖️ Auto → 🚀 YOLO → ▣ Plan |
↑ / ↓ | History prev / next (single-line draft) |
Ctrl+E | Open the draft in $EDITOR |
Ctrl+S | Open the sessions picker |
Ctrl+M | Open the assistants / persona picker |
Ctrl+A | Toggle the subagent sidebar |
F1 … F4 | Help · Activity · Approvals · Artifacts |
Ctrl+C | Abort the current run, or quit if idle |
Ctrl+L | Clear the session (gateway-side) |
Ctrl+D | Quit (persists the current session) |
Esc | Close modals |
Shell escape
Prefix a line with ! to run a bash command locally — it is never sent to the LLM. Output appears as a code block in the transcript.
!ls
!git status
!pwdThere is a 30-second timeout and a 4000-character output cap.
queued above the input and sent automatically when the current turn ends.