octet 0.9.6
octet 0.9.6 keeps finished subagents reloadable, makes /reload --force force,
offers thinking levels for every OpenCode model that has them, fixes native
Tern on Windows and stops transcript images from covering the composer in
Ghostty and Kitty. The
version-pinned release page
records the immutable source, CI runs, artifact checksums and actual channel
availability. Source-build evidence is not public-artifact qualification.
What changed in 0.9.6#
- Finished subagents no longer block
/reload. A worker that completed, reached its turn limit, failed, timed out or was interrupted is parked by the reload with its result and session kept, including across a host binary reload, andsubagent_continueresumes it. A turn-limited or detached worker used to block every reload until the session was exited and resumed. /reload --forceforces. A worker that is still running or has queued work blocks plain and automatic reloads;--forcedetaches it, keeps its session and queued work, resumes undelivered tasks on the next turn and never replays delivered work.- Thinking levels for every OpenCode model. OpenCode Go and Zen models without a hand-written preset take their thinking levels from their pinned model record on their own route (Gemini, Claude, Qwen, Chat and Responses), and presets keep every documented image and audio input. 0.9.4 covered Gemini Argon alone.
- Gemini keeps working after a tool read media on another model. A session
holding an image or audio clip inside a tool result (for example a
readmade on Claude or GPT) no longer fails every Gemini request with "Media in tool results is unsupported"; the media is sent as inline data. - Native Tern on Windows. Tern answers in OSC 877 framing where the Windows console drops APC; octet now recognizes it, so the hello no longer times out and the reply no longer lands in the composer.
- PDF attachments work. A dropped PDF reached the model as the bare label
[PDF #1]. Models that read PDFs (Claude, Gemini, Grok, newer GPT models and many OpenCode and OpenRouter models) now receive the document itself, up to 10 MiB; other models receive its path, andreadsays it does not decode PDFs instead of returning compressed bytes. - Windows fixes.
octet-web-searchstarts on Windows, and workspaces are shown asC:\projectrather than\\?\C:\project. /extensions statusstays open. It and other one-shot summaries closed on the release of the Enter that opened them.- Rich rendering in Windows terminals. Alacritty, WezTerm and Tern on Windows drew ASCII bullets and rules with 256 colours. Terminals that announce themselves now get Unicode glyphs, truecolor, italics and links, as Windows Terminal does.
- Images stay inside the transcript. In Kitty-protocol terminals (Ghostty, Kitty, WezTerm) an image cut by the edge of the transcript view is placed only for its visible rows instead of covering the composer and status bar.
- Native Tern polish. The composer is Tern's editor card with chips, the
welcome row wraps by group, picker prices fit, an acknowledgement stall waits
five seconds before reconnecting, and a terminal
errorevent replays the surface instead of ending native rendering. - Benchmarks and speed. Custom registry providers can target Anthropic
Messages or OpenAI Responses gateways,
--session FILE.jsonladdresses a session by file, and RPC tool results carry Pi details, structured content and media. Imported and extension-created sessions list correctly. Fullscreen streaming, RPCget_state, resumed sessions,--no-sessionruns and Pi session import are measurably faster. - Dependencies. Rust minor and patch updates (including Tokio 1.53.3) and pinned GitHub Actions updates.
0.9.5 brought native Google audio input, Windows octet update and native
Tern touchpad scrolling; see the 0.9.5 notes. 0.9.4 matched Gemini
thinking levels to each model; see the 0.9.4 notes. Everything
below from 0.9.1 still applies.
Status at a glance#
- Pi compatibility is experimental and unstable. Full Pi backwards
compatibility is not yet qualified. The
octet-pi-compatadapter does not ship in this release; it remains source-only experimental work, and loading real Pi setups can be slow or fail for individual extensions. - Many extensions work today. Five first-party bundles ship (codemode, computer use, MCP, subagents and web search), any-language subprocess extensions are supported, and in the source preview unchanged Pi extensions such as Doom, drawing, the powerline footer and the rainbow editor run through the adapter. These Pi receipts are development evidence, not release qualification.
- Windows is in preview. The native Windows x86-64 (MSVC) archive and
install-octet.ps1are published and pass release-workflow runtime, terminal and ConPTY checks, but attended desktop use is unqualified and known issues remain open.
What's better since v0.8.1#
v0.8.2 was a source candidate and never published, so upgrading from v0.8.1 brings the 0.8.2, 0.9.0, 0.9.1, 0.9.2, 0.9.3, 0.9.4, 0.9.5 and 0.9.6 entries in the changelog.
- Up to 8× more parallel reads. Read-only tool calls run in waves of one per CPU, from 4 up to 32 (v0.8.1: always 4), and the runtime's worker pool is sized to the machine instead of 2 threads.
- Edits stop filling the model's context.
editandwritereturn one short line (ok, path, verb, content hash); the unified diff moves to result metadata the model never sees. Tool cards still show the diff. - Windows went from unbuildable to native (preview). The interactive crate
did not compile for Windows in v0.8.1. v0.9.6 publishes a signed MSVC
octet.exewithinstall-octet.ps1that runs in Windows Terminal and conhost, with no WSL. - Sign in instead of pasting keys. Browser sign-in for ChatGPT/Codex joins
device-code sign-in, plus new Grok, Kimi, Meta and OpenRouter account sign-in.
/setupcan remove any saved sign-in, key or custom provider. - Extensions are set up inside the app.
/extensionsinstalls, configures and manages the five signed first-party bundles (MCP, web search, subagents, codemode, computer use) with live progress, cancellation and confirmations. - Changes land when you make them. Every
/settingschoice applies immediately, even mid-run; model and reasoning changes made during a run are queued for the next safe boundary instead of being refused.
Faster and leaner#
- A launch that names its model no longer waits for a cold provider inventory.
- Resume hydrates only a viewport-sized tail; startup reuses tool definitions, extension host state and resumed configuration, and defers terminal background detection until after the first frame.
- The models.dev refresh builds only the providers octet reads instead of the whole ~5 MiB catalog, whose value tree peaked near 60 MiB.
- Only the newest four tool-result images (typically screenshots) are sent to the model on each request.
- The core toolset is
read,edit,writeandbash; the native Search tool is removed in favor ofrgthrough the shell. The default prompt makes the change, runs one relevant check and stops.
These are specific, recorded changes; no whole-release speed or memory benchmark is published.
Smoother terminal#
- Fullscreen by default with wheel and trackpad scrolling; selection and copy follow the painted transcript across scroll and wrapping.
- Quieter startup and reloads: background work no longer prints warnings, a reload ends in one note, and repeated extension notices show once per 30 s.
- Paste and attachment chips edit like ordinary text with undo; resize replays
history correctly and the
Workingclock keeps ticking. - Fixed stale or duplicated inline images when scrolling (Kitty-protocol terminals), a scrollbar hover crash, and the resume picker quitting octet on Ctrl+D (deleting is now Ctrl+X with a confirmation and recoverable trash).
- Themes can show the thinking trace expanded; quiet
Exploredgrouping now covers web search, MCP and computer use.
Providers and models#
- New models: GPT-6.1 Sol (API and Codex) and Mistral Large 4; OpenCode and OpenCode Go show their live catalogs.
- Model names, prices and capabilities refresh in the background at most every six hours, guarded against zeroed or tenfold price drops.
- Custom first-party endpoints such as Cerebras keep their real context window; discovery errors name the provider's status and message.
- Throughput is labelled honestly as end-to-end; one ambiguous provider failure no longer disables hard cost ceilings for the session.
- Prompt-cache warming (
/cache-warming), server-reported inference timing in/status, and an opt-in redacted provider request trace.
Extensions and platforms#
- Five signed first-party bundles install, update and remove with one command; installing never enables an extension or grants trust.
- In safe mode, an extension starts only with an explicit host-authority grant,
which
/extensionscan grant and revoke. - Computer use and clipboard copy work on Linux desktops: Wayland (Hyprland, Sway, GNOME, KDE) and X11.
- On Windows: Python extensions start through
py -3,!commands run through Git Bash, file edits and atomic replacement work, elevated sessions work, and computer use no longer hangs.
Reliability and trust#
- Every native and extension asset is checksummed and Sigstore-signed by the tracked release workflow; the version-pinned installer verifies it.
- Concurrent conditional writes to one file are serialized on Linux and macOS; removing the last custom provider no longer discards a concurrent writer's registry.
- Extension crash and startup-handshake fixes found by a real-package matrix, and a new end-to-end suite that drives the real binary through PTY sessions.
- Removed: the packaged Serve app, its web client, the macOS/iOS companions and the old browser extension. Computer use drives your own browser.
Highlights#
- Native coding surface:
read,edit,writeandbash(PowerShell on Windows). Independent reads and shell calls can overlap under full access; mutations and approval-bearing calls remain ordered. Native Search is removed; content search usesrgorgrepthrough the shell. - Interactive correctness: model and reasoning changes wait for a safe request boundary; settings apply visibly; paste and attachment chips remain editable text with undo. Fullscreen scrolling retires stale Kitty images.
- Provider setup and discovery: review-first API-key, subscription and local endpoint setup; explicit removal of saved providers/sign-ins; live OpenCode inventories; bounded background discovery when the model is already known.
- Sessions and presentation: resumable histories, busy steering/follow-up, selectable built-in themes, transcript selection/copy and Tern native surfaces.
- Optional integrations: five separately installed bundles: codemode, computer use, MCP, subagents and web search. Installation never enables an extension, grants trust or provisions its optional dependencies.
Changed#
- Product, SDK source and the five shipped extension manifests use 0.9.6.
Extension API versions remain independent; bundled extensions require the
exact host version
=0.9.6. - Removed the packaged Serve application, its web/Apple companions, the native Search tool and the obsolete browser extension.
- The interactive terminal defaults to fullscreen with app-owned mouse input.
--mouse autoretains inline terminal scrollback. - Provider-request tracing is opt-in and redacts prompt, credential and output contents. Only the newest four tool-result images are sent to the model.
Qualification#
| Surface | Qualification boundary |
|---|---|
| Rust workspace, SDKs and shipped integrations | Exact-source automated CI; final run and result recorded on the release page |
| Linux/macOS native archives | Clean release builds, version/host smoke, repeatable packaging, checksums and Sigstore verification; public-install receipts belong to the published artifacts |
| Windows MSVC archive (preview) | Release-workflow native runtime, terminal and extracted-executable ConPTY checks; GNU CI alone does not qualify MSVC |
| Terminal/model behavior | Loopback-provider and PTY evidence, not paid-provider or physical-display acceptance |
| Pi compatibility | Not yet qualified; the adapter is not offered in the release catalog. Source-preview receipts for individual Pi extensions are development evidence |
Prior candidate runs and local development tests are not evidence for a different release SHA. The release page distinguishes completed gates from pending or unrun acceptance; a successful build alone is not a passing coding-task smoke.
Known limitations#
- Multi-line paste on Windows. A paste still arrives key by key, so each
newline submits the prompt and a dropped file stays typed text. Paste one
line at a time, or attach files with an
@mention. octet-codemodedoes not run on Windows. The official bundle ships a POSIX shell launcher and no Windows build; on Windows it now reports that instead of failing with "not a valid Win32 application". The other four official bundles run on Windows with Python 3.- Full Pi backwards compatibility is not yet qualified, and the adapter does
not ship.
octet-pi-compatremains source-only experimental work; several unchanged Pi extensions run in the source preview, but Pi 1.0.2 API parity is not established. Installed-Pi lifecycle/command parity, dependency-bearing workflows and cold mirror startup are not release qualifications. Previously installed experimental adapters are not automatically removed or enabled; disable them explicitly if present. Built-in Pi-themed palettes, migration utilities and codemode are separate from this adapter. - Live provider, subscription and audio acceptance is not run for this release. Mock-provider tests do not establish account/model availability, billing accuracy or real audio behavior. The reported Windows Codex HTTP 400 issue (#572) remains unresolved pending a redacted request trace.
- Windows is a preview platform. The MSVC archive passes automated release checks only; attended Windows desktop use, physical-console presentation and provider behavior on Windows are unqualified, and the Codex HTTP 400 report above is Windows-specific.
- Attended UI/driver journeys remain unqualified. Automated terminal-buffer and ConPTY checks do not establish physical presentation, trackpad behavior in every terminal, or granted desktop-driver behavior.
- No performance comparison is published. Historical benchmark records are not measurements of this release's final artifacts.
- Publication channels are independent. npm, Homebrew, crates.io, SDK registries and container registries are not made available by the native release workflow. Only channels with explicit receipts on the release page should be treated as published.