fast rust coding agent, extensible in any language, multimodal inputs, deep provider integrations.
# Add to your Claude Code skills
git clone https://github.com/skaft-software/octetGuides for using ai agents skills like octet.
See how octet compares with popular alternatives.
octet is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by skaft-software. fast rust coding agent, extensible in any language, multimodal inputs, deep provider integrations. It has 182 GitHub stars.
octet's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/skaft-software/octet" and add it to your Claude Code skills directory (see the Installation section above).
octet is primarily written in Rust. It is open-source under skaft-software on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh octet against similar tools.
No comments yet. Be the first to share your thoughts!
Available after the catalog security scan passes.
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
octet reads code, edits files, runs tests and manages sessions from your terminal. One native Rust process owns the agent loop, sessions, permissions, persistence, the terminal UI and resource limits — no Node, Python or Bun needed for the core.
It runs cloud or local models, keeps resumable sessions, and takes tools as subprocess extensions you can write in any language that speaks JSON-RPC. It can also listen to audio and drive your computer in the same conversation, which is why it exists.
macOS Apple silicon/Intel and GNU/Linux x86-64, no Node.js required. This pins the exact release — recommended for CI and scripted installs:
curl --proto '=https' --tlsv1.2 -LsSf \
https://github.com/skaft-software/octet/releases/download/v0.10.3/install-octet.sh | sh
Windows (PowerShell) is a preview; its installer is version-matched to the same release:
irm https://github.com/skaft-software/octet/releases/download/v0.10.3/install-octet.ps1 | iex
Also available via cargo install --locked --git https://github.com/skaft-software/octet --tag v0.10.3 --bins octet-coding-agent,
and from a source checkout. npm is not a supported path for this release: see
installation for which channels are actually published.
It hears what it works on. Native audio input, so a model can take a WAV of your sketch, reason about it, and call tools in the same context — no "transcribe first, paste text back" round trip. Works with audio-capable models; audio is not universal across providers.
It's light. Native Rust core: no runtime to boot before your agent starts. Medians from a matched six-agent run below: 9.5 s to finish and 38.3 MiB peak process-tree memory on a 32-row ledger task.
It's yours to extend. Extensions are separate processes speaking JSON-RPC 2.0. Python, TypeScript, Rust, C++, or no SDK at all — each in its own process, with OS-level permissions.
It's honest about compatibility. Pi extensions run through an optional, explicitly experimental adapter. Some work, some don't; the adapter targets Pi's public extension API, not Pi's internals or its CLI.
One ledger task, one clean VM, one account, GPT-6 Luna at low reasoning, five measured runs per metric after an excluded warmup. Timing and memory are separate passes. Native prompts and tools differ, so this compares whole agents, not identical instructions.
| Agent | Time to finish | Peak memory |
|---|---|---|
| octet | 9.5 s | 38.3 MiB |
| OpenCode 2.2.5 | 10.5 s | 426.0 MiB |
| Pi 1.5.0 | 11.0 s | 144.8 MiB |
| Codex 0.166.0 | 13.0 s | 272.6 MiB |
| fx 0.0.16 | 13.5 s | 28.8 MiB |
| OMP 18.16.0 | 23.8 s | 388.4 MiB |
Two things worth stating plainly: fx uses less memory than octet, and five runs on one task is not a general speed or quality claim. The full protocol, every attempt, the erratum and the checksums are downloadable — start here.
There is also an independent harness that tests harness overhead across Pi-like agents, including octet: Buffon. It measures startup, CPU, memory and per-turn overhead — not coding quality.
v0.10.0 was octet's first Pi-compatible release. Pi extension support ships as an optional,
separately installable bundle called octet-pi-compat. It is experimental and compatibility is
per-extension. Extensions run as their own processes with OS permissions — the adapter does not
sandbox them.
octet extension install octet-pi-compat
# then enable it: /extensions, or --enable-extension octet-pi-compat
It needs Node 22.19+ and a matching octet host version. Bundles are pinned to the host
(requires_octet), so after updating octet, refresh each bundle you use:
octet extension update <name>
Compatibility concerns Pi's public extension API — not its private internals or its full CLI. The current ledger of what passes is in Pi compatibility.
An extension is a process: read JSON requests on stdin, write responses on stdout. Ship it in whatever you like.
# a complete extension, no SDK
$ cat hello/extension.toml
name = "hello"
$ octet --enable-extension hello
Worked examples you can copy: Python, TypeScript, Rust, C++, and a Perl example with no SDK at all — all in the launch article.
Optional first-party integrations: octet-mcp, octet-subagents, octet-codemode,
octet-computer-use, octet-web-search. Installing a bundle doesn't enable or trust it.
Releases are built and signed in CI, and every asset ships a checksum and a Sigstore bundle.
gh release download v0.10.3 --repo skaft-software/octet --pattern OCTET_SHA256SUMS
shasum -a 256 -c OCTET_SHA256SUMS
OCTET_RELEASE_METADATA.json records the exact source commit the artifacts were built from.
| Path | What lives there |
|---|---|
crates/octet-coding-agent |
the agent: loop, tools, policy, sessions, CLI and TUI entry |
crates/octet-agent |
agent runtime and turn orchestration |
crates/octet-ai |
model clients and provider routing |
crates/sexy-tui-rs |
terminal rendering |
sdk/ |
extension SDKs: Python, TypeScript, Rust, C++, C |
extensions/ |
first-party bundles, including octet-pi-compat |
docs/ |
documentation, design notes and release records |
scripts/ |
release, packaging and verification tooling |
Build from source with cargo build --release -p octet-coding-agent; the
C contributing guide covers the test lanes and profiles.
The website has the launch write-up, the full benchmark records and the design notes: https://skaft.org/octet/
octet is a hobby project, and it needs your support. It doesn't aim to chase upstream parity — it aims to be the best agent for the people who use it. The gaps get closed by whoever hits them: platforms are unevenly qualified (Windows is preview), Pi extension compatibility is per-extension, and audio depends on the model route.
It is, however, built for humans: signed releases, published checksums, benchmark evidence you can re-run, and an author who is committed to helping people who want to build on it.
Code contributions are the most useful thing you can send. The issue tracker is the work queue — there are open bugs with reproductions, and several are already scoped:
good first issue
or help wanted; difficulty is
labelled (difficulty/cosmetic through difficulty/architectural) so you can pick your size.
area/* labels tell you which crate it lands in.extensions/octet-pi-compat — patches that make a real Pi
extension work (or work better) are the most valuable contributions this project gets. Open an
issue with the failing extension and its session file, then send the diff. Known deviations are
documented in Pi compatibility.