Experimental

Introducing Octet

Read the blog post

Fast. Accurate. Light on RAM.
Extensible in Any Language.

Installation guide
curl -fsSL https://octet.skaft.org/install | bash
octet v0.10.2
/changelog · what's new
permissions: full access
Ctrl+D to exit
ExploredlistProjects src/
src/api/projects.ts:12 export function listProjects
Readsrc/api/projects.ts
Editsrc/api/projects.ts
−return projects;
+const start = cursor ? indexAfter(projects, cursor) : 0;
+const items = projects.slice(start, start + limit);
+const hasMore = start + limit < projects.length;
+return { items, nextCursor: hasMore ? items.at(-1)?.id : null };
Writesrc/api/projects.test.ts
First page · next cursor · empty result · page limit
Bashnpm test -- projects --runInBand
PASS src/api/projects.test.ts
Tests: 4 passed, 4 total

Pagination, covered.

The endpoint now returns bounded items and a nextCursor.

export async function fetchProjects(cursor?: string) {
  const page = await api.get('/projects', { cursor });
  return { items: page.items, next: page.nextCursor };
}
  • Existing callers keep the first-page default.
  • Jest covers empty pages and cursor boundaries.
✓ completed
›
Scripted examples of coding, delegated workers and web research. Animation pacing is illustrative, not measured model performance. Pause the animation to read the transcript.

Any model you want.
Any provider you choose.

Are we missing one? Let us know on GitHub!

Switch models mid-session. Use multiple models for what each one is good at.

octet supports OpenAI, Gemini, Bedrock and more. Choose a model with /model and keep working in the same session.

Setup guide
octet --model codex/gpt-6.1-terra

Set the provider’s credentials before starting.

OpenAIGeminiOpenRouterBedrockSee all providers ↗

Anthropic models are available but not recommended: they do not work well with octet today.

Easy to get into.
Open to build on.

Start with guided setup. Keep your preferences in a simple configuration file. Go further with your own instructions, skills and tools.

Set it up your way.

Choose your model, reasoning and permissions. Bring repository instructions and reusable prompts. The terminal’s model-aware palette keeps your current model in view.

model = "gpt-6.1-terra"
reasoning = "high"
Make it your default

How should I
get started?

Download octet using the terminal command above and once you've started octet, run /setup. From there you can ask octet about how to use octet and it'll take everything from there.

Small harness.
Measured head to head.

Six agents. One task. One VM. Same model. Five runs each.

Time and memory by agent Same VM and model · median of five runs per metric · lower is better A big, shiny salt crystal with a tiny smile. here's a huge grain of salt to go with the benchmark.
AgentTime to finishPeak memory
octetv0.10.0Time9.5 s👑Memory38.3 MiB
OpenCodev2.2.5Time10.5 sMemory426.0 MiB
Piv1.5.0Time11.0 sMemory144.8 MiB
Codexv0.166.0Time13.0 sMemory272.6 MiB
fxv0.0.16Time13.5 sMemory28.8 MiB👑
OMPv18.16.0Time23.8 sMemory388.4 MiB

Time and memory measured in separate passes. How I measured this ↗

Want to see an external eval for Pi-like coding agents? Check out Buffon

Medians of five runs, after one warmup. fx used less memory. One task is not a ranking.

What was measured? Read the figures and limitations.

One 32-row ledger task. One clean VM, one Codex account, GPT-6 Luna at low reasoning. Each client ran its own prompts and tools, so this compares whole agents, not identical instructions.

Timing is wall-clock launch to exit, not CPU time. Memory is a separate pass that samples the process tree about every 50 ms. Short peaks can be missed and shared pages double-counted; the widest gap was 63.6 ms.

Five runs per metric is not enough to claim a general speed or memory advantage.

Full attempts, protocol, erratum and ranges: matched-rerun evidence and report. The wider benchmark record: Introducing octet.

Read the blog post

A few useful answers.

What is octet?

octet is a free, open-source, high-performance coding agent built in Rust. It works in your repository: read code, make changes and run tests, using your choice of cloud or local model. Run your first task ↗

Is octet Pi in Rust?

octet draws on Pi’s agent architecture and terminal interaction patterns; its TUI crate is a Rust port of Pi’s TUI architecture. The v0.10.0 source candidate adds an optional experimental Pi-extension adapter, with Node 22.19+ and managed Pi extensions. It ships as a separate installable extension, and does not promise arbitrary Pi SDK parity. Moving from Pi ↗

Can I extend the coding agent in any language?

Yes. Extensions are local processes that speak JSON-RPC over stdin and stdout. Use any language that can read and write JSON lines; Rust and Python are not required. Installing, enabling and trusting a package are separate steps. Write an extension ↗

Can octet use OpenRouter and local models?

Yes. Choose OpenRouter or another hosted provider, or connect a local OpenAI-compatible model server. Model capabilities depend on the selected model and route. The website does not make inference requests or transmit your documentation searches. Choose a provider ↗

Make yourself at home.

Free and open source. MIT licensed.

Run your first task