Animated Octomind icon — purple pixel-art octopus

Until now, using Octomind with your own API key meant reading a docs page, exporting a variable and editing three model names in a TOML file. Forget one of the three and part of your session still went to the default model.

Octomind 0.70.1 asks which LLM provider to use the first time you start it, and octomind configure brings the same screen back at any time. It also tidies long sessions when you return from a break, keeps the rules you state in your own words, and checks multi-part requests one requirement at a time. The visible work landed in 0.70.0; 0.70.1 is a small follow-up released the same day. There were no 0.69 or 0.70.0 posts, so this one covers everything since the 0.68.0 post. The open-source update is available today.

Set up an LLM provider in one screen

Run octomind in a terminal with no config yet and this screen appears on its own. To open it any time later:

bash
octomind configure

You get one list. Type to filter it, press Enter to choose:

ChoiceWhat happens
Octomind hub (recommended)One browser sign-in. All three models become octohub:auto, paid with credits you buy.
A provider from the listAsks for any missing key with hidden input, then lets you pick a model.
Skip for nowAn existing config stays as it is. On a first run you get the default config.

The three models are the main agent, the supervisor that checks its work, and the compression model that summarizes old conversation. After you pick the main model, setup asks:

text
Use <model> for the supervisor and compression too? [Y/n]

Enter keeps one model for all three. Answer n to choose a cheaper model for each of the other two.

What you can count on:

  • Octomind finds the keys you already have. It looks in your shell, in ./.env and in its own .env. Those providers move to the top of the list, and each row says where its key came from, such as key in shell environment. A provider with no key shows the variable it needs.
  • A key you type stays out of your config. It goes to <data-dir>/config/.env, with owner-only permissions on Unix, and never into config.toml.
  • Nothing else in your config moves. Only the three model names change. Your comments and other settings stay.
  • When the provider's catalog says so, the list hides models that can't call tools. An agent can't work without tools. OpenRouter and Ollama Cloud lists come from their public catalogs, and if that fetch fails you type the model ID. The "other" row takes any ID at any time.
  • Esc goes back one step. On the first screen it means Skip. Ctrl-C quits.

The screen never interrupts a script. Piped input, --format and --daemon runs never see it and get the default config. To set a model from a script, use octomind config --model provider:model. To change models for one session, use /model provider:model.

The CLI reference has every detail. If you are weighing the hub against your own keys, BYOK AI lays out the difference.

Long sessions can cost less to resume after a break

Providers keep a prompt cache, a short-lived copy of your conversation that makes the next request cheaper to send. Step away long enough and it expires, so your next message pays to write the whole conversation into the cache again.

Octomind now uses that moment. If the cache is known to have expired and the math favors it, Octomind runs context compaction first, meaning it replaces the older part of the conversation with a summary. Then it sends your message. The rewrite you were going to pay for anyway gets shorter, and so does every later request.

Idle compaction is on by default. To turn it off:

toml
[compression]
idle = false

Compaction runs only when the numbers work out. The numbers below are invented and round, in units where 1 token of normal input to your main model costs 1. Assume a cache write costs 1.25, a cache read costs 0.1, and output costs 5.

Your conversation is 200,000 tokens. Compaction would bring it down to 120,000, which is 80,000 fewer. The summarizing call reads 100,000 tokens and writes a 3,000-token summary.

If you expect…Saved on the next writeSaved on later readsSummarizing call, same modelDecision
10 more calls80,000 × 1.25 = 100,0009 × 80,000 × 0.1 = 72,000100,000 + 15,000 = 115,000Compact
Only 1 more call80,000 × 1.25 = 100,0000100,000 + 15,000 = 115,000Skip

A cheaper compression model lowers the last cost column, which is one more reason to answer n in the setup screen.

The limits:

  • No guessing about the cache. If Octomind doesn't know the cache is gone, it doesn't compact. It counts as gone after the cache has sat idle for its known lifetime, or when it belongs to a different model because you switched.
  • At most one of these compactions per turn.
  • Cancelling is safe. If you cancel during this compaction, the turn stops and your conversation is left as it was.
  • It needs real prices and a cache. Octomind skips this step when your main model has no prompt caching, or when it doesn't know the price of your main or compression model.

New configs also start with higher limits: compaction at 105,000 tokens instead of 70,000, and a session ceiling of 300,000 instead of 200,000. Existing configs keep the values they have. The LLM context compression guide explains those two settings.

The rules you state stay in your own words

When you tell the agent something like "never push to main", Octomind's learning system can carry that into later sessions. Learning is on by default. A rule that passes verification against what you said is now stored with your original quote, where you said it, and the scope it applies to.

What that changes:

  • Your rules are labeled as yours. Verified rules reach the model in their own block with your original quotes. Other lessons are marked as having no verified source.
  • A failed task can't weaken them. Bad outcomes can lower the score of a lesson, but not of a verified rule.
  • The permission check sees them too. The model that does the work and the check that authorizes tool calls get the same rules, with quotes, scope and conditions. A remembered preference doesn't grant permission for anything unrelated, and what you say now overrides what you said before.
  • Rules are never cut in half. A rule goes in whole or stays in storage. When context runs short, optional memories are dropped first and verified rules stay. If the required context still can't fit, Octomind doesn't send the request.
  • A rule is replaced only on purpose. A new rule has to name the old one by ID. Sounding similar is never enough to delete a short rule.

One limit to know about: the memory sent with each request has a 2,000-token budget, so a long list of rules may not all appear on every request. The docs put it plainly: "This is bounded retrieval, not a guarantee of perfect recall." Run /learning show to inspect what is stored, and read the learning guide for how recall chooses.

"Done" is checked against every part of your request

The verify gate compares an agent's "done" with what it did.

  • The gate keeps every numbered or bulleted requirement whole, with all its clauses, and there is no limit on how many it tracks. Write "1. fix login 2. add a test 3. update the docs" and all three stay on the list.
  • The gate's advisory names everything still unproven. Once per turn, it can point out conditions it could not settle. That note never blocks the agent and never certifies the work as correct.
  • Claims without evidence don't pass as settled. A match with no citation stays unsettled.
  • Old findings stop lingering. A clean run replaces stale findings, and findings now belong to your latest message.

With the supervisor's evaluation model on ([decision] supervisor = true, off by default), the advisory leaves out conditions that a recorded action already exercised, so you see fewer false alarms. If that check refuses or isn't available, the conditions stay.

The unsettled_confidence_threshold setting under [supervisor.gate] is gone, and the config upgrade removes it for you. The supervisor guide covers the gate in full.

Unattended runs no longer wait for compaction

If a one-shot octomind run exits with a compaction still in progress, a background process now finishes it. Your next --resume picks up the result, and the usage isn't billed twice. Daemons don't use this path, and there is nothing to enable.

One optional addition for long coding sessions: summaries are fine for what happened, but poor for the exact lines of a file. With this setting on, compression keeps selected file regions as exact text across compactions, and checks them again when a later tool changes the file. It is off by default:

toml
[compression.attention]
enabled = true

The compression guide covers the rest.

Connecting to providers and tools

If you…What changed
Sit behind a corporate CA or inspecting proxyCertificates your OS trusts now count, which fixes invalid peer certificate: UnknownIssuer.
Want more model providersreflection: (Reflection AI) and isoquant: (Isoquant) are available, and appear in the setup screen.
Run OllamaOllama prompt caching and TTL keepalive are supported.
Use MCP server OAuth in unattended runsWith no token and nobody to sign in, the server shows as unreachable and offers no tools, instead of failing with a generic error.
Build MCP serversSession metadata now includes a shell value, so a server can offer command-running features only when the session may use its shell tool.

Other fixes since 0.68.0

  • Agents stop polling background work (0.70.0). They are told that results arrive on their own, so they send a short status and end the turn while they wait.
  • Specialists launched in parallel no longer crash (0.70.0). Two launched in the same second could die with must define at least one new [[roles]] entry.
  • --format jsonl survives a /role switch to a tap role (0.70.0). It used to fall back to plain output.
  • Spawned processes yield to the agent (0.70.0). MCP servers, tools and monitors start at a lower priority. On Linux they also ask to be killed first when memory runs out, where the system allows it.
  • Keepalive pings stop after a cache miss (0.70.0).
  • Editor integrations (ACP): cancelling during compaction now reports as cancelled (0.70.0), and the protocol moved to agent protocol v1 (0.69.0).
  • Delegated specialists get their own instructions (0.69.0), so they answer as a tool result.
  • Workflow loop steps reject max_iterations = 0 (0.70.0).
  • /learning list bogus now reports the bad argument (0.70.0) instead of showing page 1.
  • /skill *review* 2 pages through a filtered list (0.68.1).

Before you update

  • Your config migrates to version 29 on first start. It adds idle = true under [compression] unless you set idle yourself, and removes unsettled_confidence_threshold. A config at version 29 won't load in an older Octomind.
  • The first compaction after a break may run sooner than you are used to. Set idle = false to keep the old behavior.
  • Existing configs keep their token limits. Only new configs get 105,000 and 300,000.

Update to Octomind 0.70.1

On macOS and Linux:

bash
curl -fsSL https://octomind.run/install.sh | bash -s -- --version 0.70.1
octomind --version

On Windows, in PowerShell:

powershell
$env:OCTOMIND_VERSION = "0.70.1"
irm https://raw.githubusercontent.com/muvon/octomind/master/install.ps1 | iex

Or run scoop update octomind. See the installation guide for other methods, the full changelog, and the 0.68.0 notes if you're coming from 0.67 or earlier.

Then try it: run octomind configure, look at which keys it found, and press Esc to leave without changing anything.

— DK