← Changelog

octet 0.10.0

octet's first Pi-compatible release. If you use Pi, you can bring your extensions, skills, prompt templates, themes and custom UI to octet, a native Rust coding agent. We're working toward full compatibility with existing Pi setups. This release covers most of Pi's public extension API, and the API ledger lists what's still missing.

Get started#

Install octet, then follow the Pi setup guide. The release page has downloads and checksums. Extension bundles install separately, and installing one doesn't run it.

The Pi adapter needs Node 22.19+ and works with managed Pi installs from 1.0.2 through 1.4.x. The rest of octet doesn't need Node: Rust runs the agent loop, sessions, permissions and terminal.

Highlights#

Pi#

  • Bring your Pi setup. octet reads your Pi extensions, skills, prompts and themes each time it starts, or you can import a reviewed snapshot. Pi joins codemode, computer use, MCP, subagents and web search as the sixth optional extension bundle.
  • Pi 1.4. Setup and the installed-Pi fallback accept Pi 1.0.2 through 1.4.x. The adapter follows Pi 1.4's API additions: messageType on before_agent_start, aborted on agent_settled, tool durations, reachesTools, namespace aliases, getPromptGuidelines() and the pi-ai/models import. Of Pi 1.4.0's 79 example extensions, 69 load directly, 4 load through the installed-Pi fallback, 4 need their own npm install, and 2 use provider features octet doesn't support yet. That's the same result as Pi 1.0.2's examples. Loading is not the same as every feature working; see the ledger.
  • Commands and footers. Pi commands show up in octet's / menu, including after /reload. Session observations expose recorded per-reply usage and known cost; unavailable values are not fabricated as zero. Session-name setters acknowledge the committed, normalized name or clear before getters read it, even without a custom footer, editor or widget.
  • Startup. Extensions see the real model and scoped models when they start, and can register tools late without deadlocking. Pi editors and footers stay mounted across theme changes. Tools with camelCase names such as mcpScript keep their exact names.

Models and providers#

  • Terra API. Direct OpenAI gpt-6.1-terra has Responses tools, its exact reasoning choices, 1.05M context / 128K output and reviewed cache/long-context prices. This does not establish Codex availability or subscription pricing.
  • Gemini signed replay. Repeated or overlapping text and reasoning chunks are no longer dropped, so signed replies replay correctly across tool calls on Google, Vertex, OpenCode Zen and OpenCode Go.
  • OpenRouter reasoning. reasoning_details, which carry Gemini and Anthropic signatures, are kept and sent back to the same model. Earlier reasoning is no longer shown to the model as visible text.
  • Long Gemini writes. Once a stream starts it may now go quiet for 15 minutes instead of 5. Gemini doesn't stream tool-call arguments, so large file writes used to time out. The one-hour response limit is unchanged.
  • Oversized media. An HTTP 413 explains what happened and suggests a fresh session with fewer or smaller attachments, instead of compacting the conversation behind your back.

Sessions, skills and the terminal#

  • Background workers. Subagent status keeps updating between parent turns, without another keypress. Live status no longer waits behind a long-poll worker wait; failed refreshes retain the last accepted view and stay in extension diagnostics rather than repeating transcript notices.
  • Longer sessions. A session can now grow to 512 MiB, up from 256 MiB or a million records. A full session tells you to start a new one with /new; the old one stays saved and resumable.
  • Your skills win. A skill in ~/.agents/skills, ~/.pi/agent/skills or ~/.octet/skills replaces a same-named skill that ships with an extension, as in Pi, without a collision warning.
  • Signed-in apps. The computer-use and Cua Driver skills can work in apps and sites where you're already signed in, once you approve that app and account. Sign-ins, passwords and two-factor codes stay with you.
  • Links in any terminal. Clicking a transcript link works in terminals without OSC 8 support, such as Apple Terminal.
  • Shell output copy. Selection follows sanitized, wrapped output without copying matching text from the command header; literal HTTP(S) output links retain their safe click targets within bounded URL/payload limits. Compact tails map to retained output, not omitted duplicates or elision labels.
  • Tab activity. Interactive sessions identify app=octet through OSC 7501 and report actual working, user-gate, completion and failure states without private text or invented percentages. Fast foreground operations keep distinct results, and sign-in includes catalog readiness. Tern also receives indeterminate progress.
  • /settings tui switches no longer reset the transcript.
  • Shell deadlines. Bash has no default deadline. Explicit per-call timeouts and configured ceilings still apply, and cancellation retains process-tree cleanup. See tools.
  • Theme profiles. Native TOML themes can select [metadata] profile = "pi" and override thinking/tool styles, state fills, horizontal padding and native activity shimmer without enabling Pi extensions. See theme profiles.

Windows (preview)#

  • Sign-ins and transcript links open your browser instead of File Explorer.
  • Multi-line text pastes as one paste instead of submitting at the first line break.
  • octet extension update works and recovers from a failed update.

Security#

  • zstd 0.14.3 for RUSTSEC-2026-0391, -0398, -0403 and -0410.
  • pulldown-cmark 0.13.6 for RUSTSEC-2026-0414 and RUSTSEC-2026-0433.

Breaking change#

Tool names are case-sensitive, including built-ins: use read, not Read.

Trust and permissions#

Turning on the Pi adapter runs your enabled Pi extensions with your OS permissions, as Pi does. It is not a sandbox. Sharing provider credentials with extensions is a separate opt-in.

A newly bound Pi extension owner can report a plain repository as trusted when it has no trust-requiring .pi resources or project/ancestor .agents/skills, as Pi does. This permits extensions such as pi-lens to start language servers, which may execute project code. The signal can tighten when resources appear; removing them does not silently restore it within that owner, and native trust revocation takes precedence. Replacement owners reevaluate it. This conservative lifecycle differs from Pi's retained setting. Native workspace trust, project resource loading and tool policy are unchanged.

Known limitations#

  • Continue without a provider can load normally enabled, admitted extensions. Prompts and model-dependent operations stay unavailable until you configure a model and restart octet.
  • Cold Pi setup capture still precedes the fully initialized branded frame. A typeable Loading your Pi setup status identifies this wait; cached startup and the loading label do not establish cold-start parity with Pi.
  • Whole-setup startup/footer ordering, original-editor behavior and actual terminal pixels remain separately unqualified. Native-host and unit tests do not establish visual Pi parity.
  • Codemode turns on from Pi's "defaultTools": ["+codemode"] only when the bundle is installed and admitted. Inside scripts, tools.bash resolves to octet's result (stdout, stderr, exit_code, …) and rejects on a non-zero exit; Pi resolves to {output, truncated, exit_code, wall_time_seconds}.
  • octet replaces pi-subagents, @narumitw/pi-goal and Pi codemode with its own subagents, /goal and codemode, and doesn't load those Pi packages. See Pi packages octet replaces.
  • Pi packages that start their own child agent session, such as /btw, don't work yet.
  • Pi's startup [Skills] and [Prompts] listing isn't printed. Skills and prompts still load.
  • With a Pi custom editor active, Enter in ! bash mode may not submit.
  • Compatibility is with Pi's public extension API, not its internals or full CLI. Gaps are listed in the API ledger. If something you rely on doesn't work, open an issue with a small example.
  • Windows is a preview. CI tests the GNU build; the released Windows build is MSVC. Bun isn't tested; use Node 22.19+.
  • This release hasn't been qualified against live providers or for model quality, and makes no overall performance claim.
  • Tab activity depends on terminal support. Actual Rex/Tern tab presentation is unqualified; their app/icon catalogs must map Octet's mark. App identity does not upload or install a tab logo.
  • The Gemini, OpenRouter and long-write fixes are tested against recorded and local provider streams, not yet against every live provider.
  • Python-based extensions need Python 3.11+ with venv/ensurepip, or a configured private runtime. Codemode needs neither Python nor Node.

Found a rough edge? Open an issue with your octet version, platform, extension and steps to reproduce. Contributions are welcome; see CONTRIBUTING.