SmartCLI
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| startA | Spawn a program in a new detached, persistent session and return its id. The session survives across tool calls (a localhost-only daemon owns the live
PtySession). Server-side limits (violations return an error): at most 8 concurrent
sessions by default (tunable via SMARTCLI_MAX_SESSIONS); |
| list_sessionsA | List active drive-tui sessions. Returns {"ok", "sessions"}: each entry carries "sid", "port", "pid", "cmd", "cols", "rows", "cwd" and "started". |
| snapshotA | Read a semantic snapshot of the session's current screen. Returns {"ok", "alive", "alt_screen", "text", "hash", "visual_hash"}:
|
| closeA | Terminate a session and its daemon. Always close sessions when done. |
| send_textA | Type literal text into the session (no Enter). Use for filling fields. |
| send_lineA | Type text followed by Enter — the common 'run this command' action. |
| send_keysA | Send key tokens, e.g. ["Down", "Down", "Enter"], ["C-c"], ["M-x"]. Named tokens: Enter, Return, Tab, BackTab, Space, Backspace, Delete, Escape, Esc, Up, Down, Right, Left, Home, End, PageUp, PageDown, Insert, F1-F12. Combos: "C-" or "^" (Ctrl — letters plus @, Space, [, , ]) and "M-" (Meta/Alt, ESC prefix). Any other token is not an error — it is typed as literal text. Arrow keys adapt to the app's cursor-key mode (SS3 under DECCKM, CSI else), so menu navigation works in curses apps. |
| wait_regexA | Block until Returns {"ok", "matched", "alive", "text", "json"}. Timeout is not an error: the call returns ok=true with matched=false plus the final screen snapshot. Screen lines are right-padded with spaces — end-anchored patterns never match; use unanchored markers. This is the readiness sync — prefer it over a blind delay after send_line/send_keys. |
| wait_changeA | Block until the screen content changes, then snapshot. The precise "did my action land?" primitive: call it right after send_line/
send_keys to wait for ANY change from the baseline (default: the screen at
call time; or pass a prior |
| wait_visual_changeA | Wait for text, selection styling, or cursor position to change. Prefer this after arrow/navigation keys in full-screen TUIs. Pass a prior
|
| wait_anyA | Wait for ANY of Race several possible outcomes at once — e.g. patterns=[">>> ", "Error",
"Password:"] — and learn WHICH happened. Patterns are scanned in list order
each poll, so the earliest in the list wins a same-poll tie (put the most
specific first). Screen lines are right-padded with spaces — end-anchored
patterns never match; use unanchored markers. Returns {"ok", "index",
"matched", "alive", "text", "json"} where |
| wait_readyA | Wait for a regex Returns a snapshot plus |
| aliveA | Check whether the session's child process is still running. |
| resizeB | Resize the session's terminal to cols x rows. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 14 tools
Most tools have distinct purposes, but the five wait_* variants (wait_regex, wait_change, wait_visual_change, wait_any, wait_ready) overlap conceptually and could be misselected without careful attention. Send tools and lifecycle tools are clearly separated.
All tools follow a consistent snake_case verb-first convention, with send_* and wait_* prefixes grouping related actions. Single-verb tools like snapshot, close, start, alive, resize fit the pattern naturally.
14 tools is well-scoped for a terminal session manager, covering lifecycle, input, perception, and synchronization without unnecessary bloat. Each tool earns its place in the API.
The set provides comprehensive coverage of the domain: session lifecycle (start, list, close, alive, resize), input (send_text, send_line, send_keys), perception (snapshot), and synchronization (all wait_* tools). No critical gaps are apparent.