Repository navigation
scoot 0.1.0
The tool went public under a new name and on official APIs.
- Name:
scoot, PyPI packagescootcli, with a mascot (banner,/help, status-bar face whose eyes follow the turn;--no-logo,/logo on|off). - Providers: a provider layer (
providers/) behind oneProviderprotocol. OpenAI through the Responses API (default modelgpt-5.3-codex,SCOOT_EFFORTfor reasoning effort) and a local Ollama through the same wire; models areprovider/model; aProviderPooldispatches by prefix;scoot modelslists per provider. Provider output items such as encrypted reasoning are stored on the assistant message and replayed only to the producing model. - Auth: plain API keys, from the environment or
scoot auth set <provider>(validated, saved0600);scoot authshows every provider's key source;scoot auth clearforgets one. Ollama needs no key. - Configuration:
.envreplacesenv.env:~/.config/scoot/.envplus the nearest project.env, importing onlySCOOT_*, provider key variables, andHTTPS_PROXY/NO_PROXY; every setting is namespacedSCOOT_*;/statusshows the env files read. Localhost andNO_PROXYhosts bypass the proxy. - Removed: GitHub Copilot support (no public chat API), the Kerberos/
curl/SSL-bypass corporate machinery, the JetBrains identity, the Jira tools. - Packaging: MIT license,
pyproject.tomlmetadata with the version inscootcli/__init__.py,scoot --version, wheel + sdist + zipapp fromscripts/build.sh. - Docs: README, SPEC, DESIGN, ROADMAP, and AGENTS rewritten for the public tool.
Also since 0.0.19:
- Tab-completion of slash commands: in the REPL input, type
/(or a prefix like/ve) and press
Tab to complete the command name; repeated Tab cycles through the alphabetical matches
(wrapping around). Any other key ends the cycle. Powered by a purecycle_completionstate helper
(unit-tested) fed by the live command registry. /verbositycommand: regulate how much of a turn's "thinking" shows in the feed —
full(default; reasoning + every tool call kept as a run log),compact(reasoning shown, each
tool call collapses to a single transient line above theThinking…spinner, removed when done), or
quiet(reasoning hidden, tool calls collapsed). Also settable viaSCOOT_VERBOSITY; shown in
/statusand documented in/help+ README/SPEC.- REPL/session UX: default launch now auto-resumes the latest session for the directory
(/resetto start clean;SCOOT_RESUME=hint|offto opt out), and a resumed session now replays
its full transcript on screen and seeds ↑-key history from prior prompts. - Status bar tokens now show both the current context size and the cumulative session total
(▤ ctx N · Σ M tok);ctxis estimated from restored messages before the first API call. - Status bar context %: the context segment now shows its share of the auto-compact threshold
(ctx N (P%)) and flips to a△warning glyph at ≥80% so you can/compactbefore it auto-fires. - Status bar message count: the bar now shows the conversation size (
✉ N). - Status bar errors: a failed turn now shows a
⚠ <ErrorType>segment in the bar (cleared when the
next turn starts), mirroring the existing◇ done/totalplan counter. README documents the full
status-bar segment legend. - Single turn label: the
⏺ scootlead-in now prints once per turn — intermediate narration
and the final answer print underneath it as one block, instead of repeating the gutter per message. - Visible tool-in-use: the auto-approved tool line is now pinned on its own row above the
running…spinner for the whole call (previously it was drawn then instantly overwritten by the
spinner/thinking…); the tool row is kept on screen (scrolls into the feed as a log of what ran)
while only the spinner row is cleared, so fast tools no longer flash past before you can read them. - Auto-compact threshold raised
24k → 100ktokens (SCOOT_COMPACT_AT). - Default approval mode is now
yolo(SCOOT_APPROVAL); the catastrophic-command denylist
still confirms destructive shell commands. - Input editor: ↓ on a draft line clears it (keeping the text stashed); ↑ restores it.
Install: pipx install scootcli (or pip install scootcli), or download scoot.pyz below and run it with any Python 3.9+.