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", "exited", "text", "json"}. Timeout is
not an error: the call returns ok=true with matched=false plus the final
screen snapshot. |
| 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", "exited", "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 are clearly distinct by action and target, but the five wait_* variants overlap conceptually. Their descriptions explicitly differentiate patterns, content hashes, visual hashes, multiple patterns, and readiness modes, so an agent can choose, though some confusion is possible.
Tool names consistently use snake_case and are mostly verb-first or verb_noun (list_sessions, send_keys, wait_regex, close, start). Minor noun/adjective names like snapshot and alive still fit the overall predictable style.
14 tools is a reasonable size for persistent terminal and TUI automation. The five wait tools are somewhat heavy, but each covers a distinct synchronization primitive rather than being redundant.
The set covers session lifecycle (start, list_sessions, close, alive, resize), input (send_text, send_line, send_keys), waits, and screen perception. Minor gaps exist for explicit signal/interrupt operations or scrollback retrieval, but send_keys and snapshots let agents work around them.