Skip to content

Releases: OkamiOps/Okami-Agent

🐺 Okami Agent v0.15-beta — Native Tools, Provider Control & Telegram

Choose a tag to compare

@msant262 msant262 released this 11 Jul 12:06

🐺 Okami Agent v0.15-beta — Native Tools, Provider Control & Telegram

A reliability release for the part of an agent that matters most: finishing the job without losing
tool calls, ignoring cancellation, or silently switching the model you asked for.

Release v0.15-beta
Published 2026-07-11
Compared with v0.14.3-beta
Scope 42 commits · 413 files
Verification 4,081 passed · 7 skipped · Ruff clean
Compatibility Existing YAML, aliases and CLI/OAuth transports remain valid

🌐 Website · 📚 Documentation ·
📋 Full changelog


Why this release exists

Okami already had native tool calling, multiple providers and a Telegram gateway. The weak point was the
space between those features:

  • a streamed native tool call could not be reconstructed as a first-class action;
  • a crash could leave an assistant call without its tool result;
  • retry and fallback could outlive the request that created them;
  • provider, model and transport decisions were spread across multiple layers;
  • Telegram exposed only a fraction of the provider/model controls available in the CLI.

v0.15-beta closes those gaps as one vertical path. A model can stream structured calls, the harness can
execute and checkpoint them atomically, cancellation can stop the recovery chain, and Telegram can select
the same runtime target as the CLI — without trusting arbitrary callback payloads.

✨ Highlights

Area What changed What it means in practice
🧠 Native tool protocol Structured deltas, atomic assistant/tool history and interrupted-call repair Fewer broken multi-turn sessions and no silent re-execution after a crash
⏱️ Cancellation Total, TTFB and idle deadlines with cooperative abort and interruptible retry /stop and timeouts stop the recovery chain instead of merely changing the UI
🔌 Provider runtime Immutable targets, one resolver and a transport registry Provider/model/endpoint decisions are inspectable and consistent
💬 Telegram Secure model picker, /providers, persistent selection and safer callbacks Switching models on mobile no longer requires memorizing IDs
🔐 Authentication Six-provider OAuth/token-plan onboarding and real model discovery Fewer manual .env edits and fewer fake “provider connected” states
🧰 Skills 30+ built-in skills plus Git context, Meet and Teams plugins More useful workflows ship with the agent instead of being copied by hand
🛡️ Hardening Anti-hammer/floundering guards, credential-safe enumeration and clean Ruff gate Less looping, less accidental secret exposure and a cleaner baseline

🧠 Native tool calls are now a complete protocol

Streaming is no longer limited to text. Okami now accumulates structured tool-call deltas — ID, function
name and JSON arguments — and returns them to the harness as native calls.

The message history follows the provider protocol instead of approximating it:

assistant(tool_calls=[call_1, call_2])
├─ tool(call_1) → result
└─ tool(call_2) → result

That group stays atomic during:

  • session history persistence;
  • context compaction;
  • checkpoint/resume after a crash;
  • terminal acceptance or rejection.

If a checkpoint contains a call without a result, resume records it as INTERRUPTED; it does not
quietly execute the action again. If a terminal action is rejected by verification, it receives one
REJECTED result. If a terminal is accepted before later calls in the same batch, those calls are closed
as not executed instead of being left orphaned.

⏱️ Cancellation and timeouts now belong to the request

Each generation owns a RequestContext with:

  • total request deadline;
  • time-to-first-byte deadline;
  • stream idle deadline;
  • cancellation reason and terminal state;
  • cooperative abort handles when the transport exposes one.

Retries use the remaining budget, not a fresh full timeout. Backoff is interruptible. The harness
checks cancellation before worker admission, after generation and before compaction, escalation or
fallback. Once cancellation wins, no “helpful” recovery branch gets to restart the work behind the
user's back.

A transport without a physical abort handle cannot unsend a remote HTTP request. Okami stops waiting
and prevents subsequent work, but does not pretend it killed something the provider does not allow it
to kill.

🔌 Provider/model routing has one source of truth

The new runtime boundary separates three concepts that were previously tangled:

Concept Responsibility
RuntimeTarget Immutable effective provider, model, endpoint, API mode, capabilities and billing route
TargetResolver Converts aliases, overrides and fallbacks into a concrete target
TransportRegistry Executes the adapter selected by that target

LiteLLM still works and remains important for compatibility. The difference is architectural:
LiteLLMCompatTransport is now one adapter, not the place where the entire provider model lives.

Other provider improvements in this release:

  • structured fallbacks distinguish different models under the same provider;
  • Completion.provider/model reports the target that actually served the answer;
  • unknown provider knobs are preserved without silently colliding with core configuration;
  • custom providers record their transport explicitly;
  • endpoints and credential references can be shown without printing secret values;
  • authentication menus cover OAuth and token-plan providers and discover real models.

💬 Telegram catches up with the CLI

Telegram now uses the same provider/model resolver and session persistence as the CLI.

/providers     show configured providers without exposing credentials
/model         open the inline model picker
/model <id>    select an explicit provider/model
/thoughts off  hide live reasoning while keeping model reasoning enabled

The inline picker uses short callbacks such as okmodel:3. The number is resolved against an in-memory
catalog bound to that chat; Telegram cannot inject an arbitrary provider/model string through callback
data. Invalid or stale indexes are ignored safely.

Also included:

  • heartbeat edits one status message instead of spamming the conversation;
  • generated images/videos emit MEDIA: and are attached to the Telegram turn;
  • slash-command descriptions include the new provider flow;
  • custom provider setup confirms endpoint, transport and env reference without echoing the key.

🧯 The harness is harder to trap in stupid loops

Several production-shaped failure modes were closed alongside the protocol work:

  • anti-hammer stops repeated calls to the same tool with the same ineffective input;
  • floundering detection interrupts long sequences that make no measurable progress;
  • the circuit breaker compares normalized failures instead of raw strings that never matched;
  • working context has a practical ceiling even when the advertised model window is enormous;
  • /steer is drained at the top of the loop, before the next generation;
  • streamed reasoning is scrubbed from the user-facing answer;
  • verification rules no longer punish documentation-only writes as if they were executable code;
  • an explicitly requested model or tool cannot be silently substituted.

🧰 30+ skills and new built-in integrations

The release also ships a large skills wave from the Hermes comparison and skills.sh ecosystem:

  • frontend design and implementation references;
  • API debugging, Docker operations and codebase inspection;
  • Google Workspace, Apple Notes and Reminders;
  • OCR, PDF, diagrams, infographics and video workflows;
  • Git context, Google Meet and Teams plugins;
  • remote skills discovery and native-first tool guidance.

These are versioned defaults. Local skills and agent identity files still override the built-ins.

🛡️ Security and correctness

  • credential files cannot be read even in permissive/yolo execution;
  • file enumeration and search hide sensitive credential names;
  • secret-plus-network scanning was recalibrated to avoid common design/web false positives;
  • external XML from arXiv, RSS, YouTube, DOCX and XLSX is parsed through defusedxml;
  • context usage includes provider cache data instead of under-reporting occupancy;
  • provider reasoning stays out of normal user-visible responses;
  • 75 existing Ruff findings were reduced to zero.

🚀 Install or upgrade

Existing installation

okami upgrade --check
okami upgrade
okami version
okami doctor

Fresh install — Linux, macOS or WSL

curl -fsSL https://raw.githubusercontent.com/OkamiOps/Okami-Agent/main/scripts/install.sh | bash

Fresh install — Windows PowerShell

irm https://raw.githubusercontent.com/OkamiOps/Okami-Agent/main/scripts/install.ps1 | iex

No mandatory configuration migration is required. Existing okami.yaml, provider aliases, fallback
names and CLI/OAuth transports remain supported.

✅ Verification

  • 4,081 passed, 7 skipped
  • pip-audit: no known vulnerabilities (aiohttp >= 3.14.1)
  • uv run ruff check okami tests — clean
  • git diff --check — clean
  • native tool-call rejection/terminal regressions covered
  • Telegram callback catalog isolation covered
  • provider target/transport/fallback matrices covered

The controlled full-suite run used the repository's complete agent identity fixture. The developer
checkout may contain gitignored agents/okami/* overrides; stale or incomplete local overrides can make
identity-content tests fail without changing the packaged defaults.

🚧 Deliberately not included

This release does not claim complete Hermes parity:

  • LiteLLM is not yet optional for every provider;...
Read more

v0.14.3-beta 🐺

Choose a tag to compare

@msant262 msant262 released this 08 Jul 10:05

Correção de comportamento no chat interativo, encontrada por varredura end-to-end real (todos os comandos executados de verdade, não apenas testes de unidade).

🐛 Correção

  • okami chat -p <provider> era ignorado — o chat interativo mostrava e usava o provider default do okami.yaml mesmo quando -p/--provider pedia outro. Agora a flag define o provider da sessão de chat (banner, rótulo de modelo e turnos consistentes). okami run/okami task já honravam -p.

✅ Cobertura

  • Novo teste que executa okami chat -p de verdade e exige que o banner reflita o provider da flag.

Atualizar: okami upgrade.

v0.14.2-beta 🐺

Choose a tag to compare

@msant262 msant262 released this 08 Jul 09:44

Hotfix do chat interativo.

🐛 Correção

  • okami chat não iniciava (UnboundLocalError: ep) — o indicador de ferramenta-em-execução do toolbar era inicializado antes de o endpoint existir, derrubando o chat no boot. Corrigido.
  • Novo smoke test que executa o okami chat de verdade (subprocess) e falha diante de qualquer traceback de inicialização — blinda a classe de bug que testes de unidade não pegam.

Atualizar: okami upgrade.

v0.14.1-beta 🐺

Choose a tag to compare

@github-actions github-actions released this 08 Jul 09:39

Correções de acompanhamento à instalação e à telemetria de uso.

📦 Instalação

  • Detecção de instalação-fantasma no PATH — um okami antigo instalado por outro método (ex.: ~/.local/bin) que fique à frente no PATH mascarava o recém-instalado, e okami --version insistia na versão velha. O instalador agora detecta, mostra o caminho do binário antigo e o comando para removê-lo. Validado executando o instalador com e sem o conflito.

📊 Uso

  • ctx % conta o prompt inteiro (inclui cache) em vez de só a entrada não-cacheada — antes subestimava o contexto com prompt caching ativo (ex.: reportava 5% onde o real era 80%). Vale para o rodapé por resposta e a barra de status da TUI.

Atualizar: okami upgrade (ou rode o instalador de novo).

v0.14.0-beta — Instalação Limpa 🐺

Choose a tag to compare

@msant262 msant262 released this 08 Jul 09:31

Okami Agent — v0.14.0-beta "Instalação Limpa" 🐺

1 commit · suíte 3.590 → 3.613 testes · lançada 2026-07-08.

⚠️ Beta. A superfície de comandos e config ainda pode mudar até a GA. Recomendado para uso real
(inclusive em VPS 24/7) — mas rode okami policy check --strict antes de expor publicamente. Feedback
é muito bem-vindo. Ver o CHANGELOG completo.

🌐 Site: https://okamiagent.com · 📚 Docs: https://okamiagent.com/docs


A história desta release

As últimas releases fecharam gaps de capacidade — imagem, hooks, browser. Esta fecha uma lacuna
diferente, mais operacional: instalações existentes não tinham um caminho de atualização claro. O
único jeito de subir de versão era rerodar o instalador do zero, um processo não documentado e que não
confirmava o que de fato mudou. Isso deixava instalações indo ficando presas em versões velhas com o
tempo.

Esta release ataca essa lacuna de ponta a ponta: um comando okami upgrade dedicado que sabe identificar
o tipo de instalação e aplicar o caminho de atualização certo, instaladores que verificam o próprio
resultado, e um Docker que finalmente persiste o estado do agente entre reinícios do container. Ao lado
disso, o menu de configuração ganha um jeito interativo de trocar de provider/modelo, e o terminal mostra
mais informação em tempo real (timing por tool-call, tokens/custo ao vivo).

✨ Highlights

  • okami upgrade (comando novo) — detecta o tipo de instalação (managed/dev/Docker/ausente) e aplica
    o caminho certo: git pull --ff-only + uv tool install --force, reportando versão antiga → nova.
    Flags --check (só verifica) e --yes (sem confirmação).
  • Instaladores endurecidosinstall.sh/install.ps1 verificam o binário recém-instalado e
    reportam versão antiga → nova (antes, atualizavam em silêncio); install.ps1 trata long-paths do
    Windows.
  • Docker com estado persistentedocker-compose.yml guarda OKAMI_HOME (skills, agentes, sessões,
    .env, credenciais, cofre) num volume nomeado — antes, tudo isso ia para o home efêmero do container e
    se perdia a cada recriação. Dockerfile reconstruído multi-stage, uv sync --frozen, não-root,
    HEALTHCHECK.
  • okami config ganha picker de provider/modelo — troca interativa direto no menu (aliases
    sonnet/opus/fast/smart), mais uma visão de providers configurados; persiste em
    okami.local.yaml.
  • Terminal mais informativo — tool cards mostram tempo de execução; status bar (REPL e TUI) mostra
    tokens/custo ao vivo durante a sessão; toolbar do REPL mostra a tool em execução em vez de um
    "pensando" genérico.

📦 Instalação & Upgrade

  • okami upgrade: detecta 4 cenários — instalação managed (checkout git gerenciado pelo instalador),
    clone de desenvolvimento, Docker, ou ausente — e só age no caminho aplicável. Para managed:
    git pull --ff-only (nunca reescreve histórico local) seguido de uv tool install --force, com
    relatório final de versão antiga → nova. --check reporta se há atualização disponível sem aplicar
    nada; --yes pula a confirmação interativa (uso em automação).
  • install.sh/install.ps1: depois de instalar, o script agora verifica o binário final e imprime a
    transição de versão — antes o resultado era mudo, sem confirmação de que a atualização realmente
    aconteceu.
  • install.ps1: trata long-paths do Windows — checa a chave de registro relevante e habilita
    core.longpaths no git quando necessário, evitando falhas silenciosas em instalações com caminho
    profundo.

🐳 Docker

  • deploy/docker-compose.yml: OKAMI_HOME passa a viver num volume nomeado (okami-data) —
    skills, agentes, sessões, .env, credenciais e o cofre de segredo cifrado agora sobrevivem a
    recriações do container. Antes, esse estado ia para o home efêmero do container e desaparecia a cada
    docker compose up novo.
  • deploy/Dockerfile: reescrito multi-stage, com uv sync --frozen (build reprodutível a partir do
    lockfile), usuário não-root, HEALTHCHECK configurado e imagens base pinadas.

⚙️ Config — troca de provider/modelo pelo menu

  • okami config ganha uma opção de picker interativo de provider/modelo, reaproveitando o mesmo
    fluxo do comando okami model (aliases sonnet/opus/fast/smart), e uma tela de providers
    configurados
    . Antes o menu não oferecia caminho para trocar de provider ou modelo — só edição manual
    de config. A escolha persiste em okami.local.yaml.

🖥️ Terminal — mais visibilidade em tempo real

  • Cartões de tool-call finalizados mostram quanto tempo a chamada levou.
  • A barra de status — no REPL de linha e no TUI de tela cheia — mostra tokens e custo ao vivo durante
    a sessão, não só no resumo final.
  • A toolbar do REPL mostra qual tool está em execução no momento, em vez de uma linha genérica de
    "pensando".

⚠️ Beta — caveats e trabalho em andamento

  • Comandos e chaves de config ainda podem mudar até a GA (sem promessa de estabilidade de superfície).
  • Recomendado pra uso real (VPS 24/7 inclusive), mas rode okami policy check --strict antes de expor
    publicamente e acompanhe o CHANGELOG a cada atualização.
  • Em andamento, fora desta release — correções de conexão com provider seguem em paralelo: crash de
    streaming do Claude e resolução do cofre de credenciais do Codex. Previstas para uma release de
    acompanhamento.

✅ Release verification

  • 3.613 testes passando (uv run pytest -q), subindo de 3.590.
  • Reprodução local:
    uv sync --frozen
    uv run pytest -q
    uv run ruff check okami tests
    uv run bandit -c pyproject.toml -r okami -q
    uv run okami policy check --strict

🚀 Instalação / upgrade

# instalação nova (macOS / Linux)
curl -fsSL https://raw.githubusercontent.com/OkamiOps/Okami-Agent/main/scripts/install.sh | bash
# Windows (PowerShell)
irm https://raw.githubusercontent.com/OkamiOps/Okami-Agent/main/scripts/install.ps1 | iex

# upgrade de instalação existente
okami upgrade            # detecta o tipo de instalação e atualiza no lugar
okami upgrade --check    # só verifica se há atualização, sem aplicar

okami setup     # configura em 2-3 cliques
okami doctor    # confirma que a versão instalada bate com o pyproject (sem version-drift)
okami chat      # conversa no terminal

Nenhuma dependência Python nova nesta release — a mudança é toda em instalação/Docker/CLI. okami.yaml/
okami.local.yaml existentes continuam válidos.

📄 License

MIT (LICENSE) © 2026 OkamiOps — use it,
fork it, ship it commercially, no strings attached and no warranty.

🔗 Links

v0.13.0-beta — A Imagem Real 🐺

Choose a tag to compare

@msant262 msant262 released this 08 Jul 09:03

Okami Agent — v0.13.0-beta "A Imagem Real" 🐺

1 commit · suíte 3.572 → 3.576 testes · lançada 2026-07-08.

⚠️ Beta. A superfície de comandos e config ainda pode mudar até a GA. Recomendado para uso real
(inclusive em VPS 24/7) — mas rode okami policy check --strict antes de expor publicamente. Feedback
é muito bem-vindo. Ver o CHANGELOG completo.

🌐 Site: https://okamiagent.com · 📚 Docs: https://okamiagent.com/docs


A história desta release

Depois da v0.12.0-beta fechar 3 gaps de uso real, o objetivo passou de "manter paridade" com o Hermes
para ultrapassar nos pontos onde ele ainda está na frente.

Fizemos um mapeamento em 6 dimensões (mídia, gateway, TUI/humanização, harness/tools,
memória/skills/plugins, computer/browser), comparando ponto a ponto com o Hermes. O resultado não foi
unilateral — achamos gaps reais (GPT Image via assinatura quebrado, qualidade de tool-call, skills,
humanização, profundidade de browser, edição de mídia/PDF), mas também achamos onde já estávamos na
frente
e ninguém tinha documentado: HTML→PDF sem depender de Chromium (o Hermes depende), identidade
partida em 3 arquivos (SOUL/VOICE/PERSONA) contra um blob genérico único do Hermes, checkpoints de
sessão, cofre de segredo cifrado.

Esta release é a primeira onda de implementação desse backlog — 4 frentes em paralelo (mídia,
segurança/quick-wins, hooks, browser) mais a costura entre elas.

O headline é a geração de imagem nativa via assinatura: geração de imagem (GPT Image) estava
quebrada — o código antigo postava pro endpoint REST pago (api.openai.com/v1/images), voltava 401
porque exige uma API key paga separada, fora do modelo de assinatura em que o agente opera. Reescrevemos
pra postar pro endpoint da própria assinatura codex (chatgpt.com/backend-api/codex/responses, tool
image_generation, modelo gpt-image-2), com headers anti-Cloudflare corretos e resolução de
account_id via fallback (o claim do JWT normalmente não vem preenchido). Verificamos ao vivo:
gerou um PNG real de 861KB através da assinatura, texto→imagem e imagem→imagem na mesma chamada.

✨ Highlights

  • GPT Image nativo via assinatura codex — estava quebrado (401 no REST pago),
    agora posta pro endpoint da assinatura; texto→imagem e imagem→imagem na mesma chamada;
    verificado ao vivo (PNG real, 861KB).
  • codex_headers.py (novo) — headers anti-Cloudflare (originator/UA codex_cli_rs +
    ChatGPT-Account-Id), com fallback de account_id via ~/.codex/auth.json quando o claim do JWT não
    vem preenchido (o caso comum).
  • Bug latente corrigido de graça: o mesmo retrofit de headers em transports.py conserta um 403
    que já existia na VPS no chat codex normal — nunca tinha sido diagnosticado até agora.
  • Host de imagem precisa ser gpt-5.5gpt-5.1 retorna HTTP 400 (documentado pra não reintroduzir).
  • Skill editar-pdf (nova) — info/extract/metadata/patch/rotate/merge/split via
    pypdf, dependência lazy.
  • Barramento de hooks unificado — 15 pontos de hook (eram ~4, em dois sistemas que não se falavam):
    pre/post tool call, pre/post LLM call, pre-verify, ciclo de vida de sessão, subagent start/stop.
  • Browser em segundo plano com sessão persistente — clicar login → dashboard → relatório sem
    re-navegar; scroll/back/press/eval (guardado contra exfiltração)/close_session; screenshot
    como image block nativo; dialogs JS com auto-dismiss; idle reaper pra VPS nunca vazar Chromium.
  • ANTISLOP.md (novo, versionado) — 15 padrões PT-BR anti-"cara de chatbot" injetados todo turno;
    instalação nova já nasce com o default, override local continua valendo.
  • Busca com ripgrep + fallback pure-Python — respeita .gitignore nos dois caminhos.
  • SSRF confirmado sem regressãonet_guard já bloqueava metadata/privado/redirect, auditoria
    formalizou o que já estava certo.

🎨 Mídia — GPT Image nativo via assinatura

Gap fechado fim a fim (dependendo do fix de token-store em andamento — ver abaixo):

  • imagegen.py reescrito: endpoint chatgpt.com/backend-api/codex/responses + tool image_generation
    (gpt-image-2) em vez do REST pago que dava 401.
  • Texto→imagem e imagem→imagem na mesma chamada (input_image parts) — não precisa de duas
    requisições separadas.
  • Host obrigatoriamente gpt-5.5 (gpt-5.1HTTP 400).
  • codex_headers.py novo: headers anti-Cloudflare; account_id resolvido via
    oauth.codex_account_id() → claim do JWT (raramente presente) → fallback
    ~/.codex/auth.jsontokens.account_id.
  • transports.py: mesmo retrofit de headers no chat codex normal — conserta um 403 latente na VPS que
    vinha da mesma causa-raiz.
  • Fallback automático pra flux/openrouter (IMAGE_BACKENDS, mesmo padrão do videogen);
    GenerateImage.check() já consulta esse fallback.
  • Verificado ao vivo: PNG real de 861KB gerado através da assinatura, fim a fim.
  • Skill nova editar-pdf: pypdf como dependência lazy, comandos info/extract/metadata/
    patch/rotate/merge/split.

🛡️ Segurança + quick wins

  • SSRF: net_guard auditado e confirmado já sólido (bloqueia metadata endpoint, IP privado, redirect,
    respeita allow_private explícito) — plugado em web_extract/browse/references; documentado sem
    necessidade de mudança de código.
  • Busca de arquivos com backend ripgrep, fallback pure-Python automático quando rg não está
    disponível — os dois caminhos respeitam .gitignore.
  • ANTISLOP.md: 15 padrões PT-BR anti-chatbot-slop (banido "Como posso ajudar?", hedging excessivo,
    entusiasmo vazio, bullet-slop e afins) injetados no core_block todo turno; shipado como default
    versionado em okami/builtin/identity — instalação nova já nasce com ele, override local segue
    tendo prioridade.

🔌 Barramento de hooks unificado

  • 15 pontos de hook (eram ~4, espalhados em dois sistemas separados): pre_tool_call/post_tool_call,
    pre_llm_call/post_llm_call, pre_verify, ciclo de vida de sessão, subagent_start/subagent_stop.
  • Bridge dos hooks shell existentes pro barramento novo — compatibilidade retroativa mantida.
  • Wiring cirúrgico em loop.py/runner.py; register_* novo pra plugins registrarem hooks sem tocar no
    core.

🌐 Browser em segundo plano + edição de PDF

  • Sessão persistente (browser_session.py, thread-bound, com idle reaper): clicar login → dashboard →
    relatório sem re-navegar a cada passo.
  • Ações novas: scroll, back, press, eval (guardado contra exfiltração de cookie/localStorage),
    close_session.
  • Screenshot exposto como image block nativo (helper compartilhado image_block.py).
  • Diálogos JS (alert/confirm/prompt) com auto-dismiss.
  • Idle reaper garante que uma VPS 24/7 nunca deixa processo Chromium vazando.

🧭 Onde já estávamos na frente

Parte do exercício de mapeamento foi honesto nos dois sentidos — nem tudo é gap. Confirmado, sem mudança
de código nesta release:

  • HTML→PDF sem depender de Chromium (o Hermes depende).
  • Identidade em 3 arquivos (SOUL/VOICE/PERSONA) vs blob genérico único do Hermes.
  • Checkpoints de sessão.
  • Cofre de segredo cifrado (v0.12.0-beta).

⚠️ Beta — caveats e trabalho em andamento

  • Comandos e chaves de config ainda podem mudar até a GA (sem promessa de estabilidade de superfície).
  • Recomendado pra uso real (VPS 24/7 inclusive), mas rode okami policy check --strict antes de expor
    publicamente e acompanhe o CHANGELOG a cada atualização.
  • Em andamento, fora desta release — 3 sessões de fix de provider rodando em paralelo:
    • Crash de streaming do Claude.
    • Bug do token-store do Codex: um token corrompido de 9 caracteres fica na frente do token válido
      da CLI e é usado primeiro — esse fix é necessário pra geração de imagem funcionar fim a fim num
      usuário novo/fresh install, mesmo com o endpoint de assinatura já corrigido nesta release.
    • Parser do claude_cli.

✅ Release verification

  • 3.576 testes passando (uv run pytest -q), subindo de 3.572.
  • Reprodução local:
    uv sync --frozen
    uv run pytest -q
    uv run ruff check okami tests
    uv run bandit -c pyproject.toml -r okami -q
    uv run okami policy check --strict

🚀 Instalação / upgrade

# instalação nova (macOS / Linux)
curl -fsSL https://raw.githubusercontent.com/OkamiOps/Okami-Agent/main/scripts/install.sh | bash
# Windows (PowerShell)
irm https://raw.githubusercontent.com/OkamiOps/Okami-Agent/main/scripts/install.ps1 | iex

# upgrade de instalação existente
uv tool upgrade okami-agent   # ou: pip install -U okami-agent

okami setup     # configura em 2-3 cliques
okami doctor    # confirma que a versão instalada bate com o pyproject (sem version-drift)
okami chat      # conversa no terminal

Nenhuma dependência nova obrigatória nesta release (cryptography>=42 já foi adicionada na
v0.12.0-beta) — pypdf é lazy (só carrega se a skill editar-pdf for usada). uv sync/
pip install -U já resolve; okami.yaml/okami.local.yaml existentes continuam válidos.

📄 License

MIT (LICENSE) © 2026 OkamiOps — use it,
fork it, ship it commercially, no strings attached and no warranty.

🔗 Links

v0.12.0-beta — O Fluxo Real 🐺

Pre-release

Choose a tag to compare

@msant262 msant262 released this 08 Jul 06:02

Okami Agent — v0.12.0-beta "O Fluxo Real" 🐺

Suíte: 3.468 → 3.500 testes · lançada 2026-07-08.

⚠️ Beta. A superfície de comandos e config ainda pode mudar até a GA. Recomendado para uso real
(inclusive em VPS 24/7) — mas rode okami policy check --strict antes de expor publicamente. Ver o
CHANGELOG completo.

🌐 Site: https://okamiagent.com · 📚 Docs: https://okamiagent.com/docs


A história desta release

A afirmação de "paridade com o Hermes" das releases anteriores era real para auditoria de código, mas
otimista demais para uso real. Esta release fecha 3 gaps de uso real — do tipo que só aparece operando
o agente no dia a dia, não lendo diff de código. No meio do caminho de mapear o primeiro, apareceu também
uma regressão autoinfligida da própria onda de auditoria anterior (v0.10.0-beta): todo turno pelo
gateway do Telegram estava quebrado
.

✨ Highlights

  • Regressão crítica corrigida — o gateway do Telegram crashava em TODO turno desde a onda de
    auditoria anterior; achado e corrigido nesta release.
  • /steer — injeta contexto no turno em andamento sem cancelar a tarefa.
  • Onboarding de provider simplificado — assinatura e token-plan ficam visíveis no menu sem depender
    de CLI.
  • Segredo via chat — cofre cifrado que aceita API keys direto na conversa, apaga a mensagem original
    e confirma, sem nunca expor o valor ao modelo.

🔥 Regressão crítica — gateway crashava TODO turno (da85c42)

  • run_task/Harness.__init__ não aceitavam set_no_interrupt, param que o endpoint do gateway injeta
    desde a onda P0 (7939d6e) — TypeError mascarado como ❌ error em CADA turno vindo do Telegram. O
    E2E anterior só cobria o caminho CLI (okami task), que não passa esse hook — nunca pegou.
  • Corrigido: run_task ganha set_no_interrupt, encadeado no _hkw (padrão do set_remote);
    Harness.__init__ aceita e guarda (self._set_no_interrupt, no-op no CLI).
  • Efeito colateral bom: o demote guard do /busy interrupt — morto até agora, nada setava
    no_interrupt=Truepassa a funcionar de verdade: _compact() marca a compactação como fase
    não-interrompível.
  • Regressão travada em test_it11_fixes.py (contrato runner↔Harness).

🎯 /steer — injeta no turno em andamento sem cancelar

  • /steer <texto>: injeta uma mensagem direta do usuário no contexto do turno já rodando (marcador
    anti prompt-injection + nota de trust explícita no system prompt) — sem cancelar. Ao lado do /busy
    interrupt (cancela e recomeça), agora existe também /busy steer (toda mensagem nova durante um turno
    vira steer em vez de interromper).
  • Session.pending_steer + steer_source encadeados run_task → Harness (mesmo padrão do
    set_no_interrupt); drenado após cada resultado de tool; se não houver onde anexar, fica deferido
    (nunca é perdido); /cancel, /stop e /retry limpam o steer pendente.

🔑 Onboarding de provider — assinatura/token-plan sem refém de CLI

  • Diagnóstico: o Okami já NÃO dependia de CLI pra minimax/mimo/grok (já eram api_key direto) nem pro
    Codex (já OAuth device-flow nativo) — o gap real era descoberta no menu, não arquitetura.
  • Presets novos em provider_catalog.py: minimax-oauth (assinatura), minimax-cn (região China,
    api.minimaxi.com), xai-oauth (SuperGrok/Premium+, client_id real); custom reetiquetado como
    "traga seu próprio provider" (token-plan/API-key/endpoint OpenAI-compat).
  • Nenhum transport novo — só torna visível o que já existia.

🔐 Segredo via chat — cofre cifrado, apaga e confirma

  • Cenário: usuário remoto sem acesso ao .env manda a API key direto no Telegram, o agente guarda seguro
    e continua. Contrato de segurança: salvar, apagar a mensagem original e confirmar + valor só no
    cofre, nunca exposto ao LLM
    .
  • Detecção no inbound do gateway, antes do modelo ver (okami/core/redact.py): prefixos de chave
    conhecidos (ghp_/sk-/xai-/AKIA/…) + padrão NOME=valor com keyword sensível e valor ≥12 chars
    sem espaço; guard contra falso-positivo (linguagem natural tipo "a senha é X" e valores curtos não
    disparam).
  • Cofre cifrado novo (okami/core/secretvault.py): Fernet, chave 32B em $OKAMI_HOME/.secret_key (0600,
    lazy), vault JSON só-ciphertext (0600, escrita atômica); resolve_secret resolve vault > env > .env; apply_vault_to_environ popula os.environ no boot (config._load_env) — providers/oauth leem
    do cofre sem editar nada.
  • Fluxo de captura: vault_setdeleteMessage no Telegram → confirmação 🔐 guardei a credencial X
    texto sanitizado in-place segue pro histórico/run_task (o modelo vê só a nota, nunca o valor).
  • Bug de ordering corrigido no caminho: redact(reply) rodava DEPOIS de persistir — vazava no
    transcript/histórico; agora roda antes.
  • Nova dependência: cryptography>=42. +40 testes de segurança; verificação independente confirma valor
    cru ausente do disco (só ciphertext, 0600), sem falso-positivo.

⚠️ Sobre a paridade

A alegação de "paridade com Hermes" das releases anteriores era real pra auditoria de código, mas
superestimada pra uso real — os 3 gaps acima (e a regressão do gateway) só apareceram operando o
agente de verdade, não lendo diff. Esta release fecha essa lacuna e assume o erro.

✅ Release verification

  • 3.500 testes passando (uv run pytest -q), subindo de 3.468.
  • Nova dependência: cryptography>=42.
  • Reprodução local:
    uv sync --frozen
    uv run pytest -q
    uv run ruff check okami tests
    uv run bandit -c pyproject.toml -r okami -q
    uv run okami policy check --strict

🚀 Instalação / upgrade

# instalação nova (macOS / Linux)
curl -fsSL https://raw.githubusercontent.com/OkamiOps/Okami-Agent/main/scripts/install.sh | bash
# Windows (PowerShell)
irm https://raw.githubusercontent.com/OkamiOps/Okami-Agent/main/scripts/install.ps1 | iex

# upgrade de instalação existente
uv tool upgrade okami-agent   # ou: pip install -U okami-agent

okami setup     # configura em 2-3 cliques
okami doctor    # confirma que a versão instalada bate com o pyproject (sem version-drift)
okami chat      # conversa no terminal

📄 License

MIT (LICENSE) © 2026 OkamiOps.

🔗 Links

v0.11.0-beta — Ferramentas e Modelos 🐺

Choose a tag to compare

@msant262 msant262 released this 08 Jul 04:49

Okami Agent — v0.11.0-beta "Ferramentas e Modelos" 🐺

Suíte: 3.364 → 3.443 testes · lançada 2026-07-08 (mesmo dia da v0.10.0-beta).

⚠️ Beta. A superfície de comandos e config ainda pode mudar até a GA. Recomendado para uso real
(inclusive em VPS 24/7) — mas rode okami policy check --strict antes de expor publicamente. Ver o
CHANGELOG completo.

🌐 Site: https://okamiagent.com · 📚 Docs: https://okamiagent.com/docs


A história desta release

1 commit (4bfbc14), mas denso: 5 ondas paralelas atacando 3 frentes de fricção no uso real — troca
de provider/modelo pouco visível, qualidade baixa nas chamadas de tool e falta de skills práticas para
workflows do dia a dia (pesquisa, monitoramento, automação). E2E real (minimax): task COMPLETE com
auto-verificação (od/wc/sha256), inclusive interceptando e corrigindo sozinho um bug de echo -n no meio
da execução.

✨ Highlights

  • Resolver único de modelo/aliasokami model, /model --save e /models numerado, com
    did-you-mean em vez de override silencioso.
  • Schema rico nas toolsenum/default/minimum/maximum explícitos fecham a causa-raiz
    diagnosticada das chamadas de tool ruins.
  • Cadeia de estratégias fuzzy no edit — paridade com o Hermes, incluindo did-you-mean top-3.
  • 4 skills novas: watchers (RSS/GitHub/JSON), stocks (Yahoo Finance), github (CI/merge/issues),
    scripts arxiv/wikipedia em pesquisa-web.

🔀 Troca de modelo

  • okami/llm/model_aliases.py: resolver ÚNICO de alias/tier — aliases semânticos (sonnet, opus,
    haiku, codex, gpt, minimax, mimo, grok, …), tiers dinâmicos fast/smart, validação contra
    o catálogo de providers, extensível via model_aliases: no yaml.
  • okami model (novo comando): picker interativo, switch direto, list --json.
  • /model no gateway/Telegram passa a usar o MESMO resolver — ganha --save (persiste em
    okami.local.yaml) e /models numerado (uso mobile sem digitar nome completo).
  • Typo de alias agora vira erro com sugestão (did-you-mean) em vez de aplicar um override silencioso
    errado.

🛠️ Tools — schema rico

Causa-raiz diagnosticada das chamadas de tool ruins:

  • to_openai_schema passa a emitir enum/default/minimum/maximum (arg_constraints) — antes todo
    parâmetro de "modo" era texto livre, sem contrato, e o modelo chutava valor. Aplicado em
    search_files, spawn_jobs, todo_write, spawn, manage_skill, browse.
  • Bug real corrigido: spawn.background sem tipo boolean — a string "false" virava True no runtime.
  • todo_write: leitura sem args, merge por id, status cancelled (paridade com o TODO_SCHEMA do
    Hermes).

✏️ Edit — paridade de cadeia de estratégias fuzzy

  • Novas estratégias: escape_normalized (\n literal), trimmed_boundary, block_anchor (ancora
    primeira+última linha, difflib no meio) — mais de 1 match seguem sendo tratados como ambíguo, o edit
    nunca escolhe sozinho entre candidatos.
  • Did-you-mean top-3 com números de linha; read_file ganha line_numbers opt-in.

🧩 Skills práticas

  • watchers: RSS/GitHub/JSON com poll + watermark dedup — a base de "me avisa quando X mudar" via
    cron → Telegram.
  • pesquisa-web ganha scripts: arxiv + wikipedia, com HTTP compartilhado.
  • stocks: cotações via Yahoo Finance, sem API key.
  • github: CI/merge/issues, gh-first com fallback via gh_api.py.
  • Mecanismo novo: frontmatter requires_tools/fallback_for_tools esconde a skill quando o tooling
    necessário não está disponível (paridade Hermes).

🔌 Plugins

  • Hook transform_tool_result: não-bloqueante, componível, isolado por plugin.
  • security-guidance: veto vira aviso ANEXADO ao resultado da tool — o próprio modelo vê e se
    autocorrige, em vez de a tool simplesmente falhar sem explicação.

✅ Release verification

  • 3.443 testes passando (uv run pytest -q), subindo de 3.364.
  • E2E real com minimax: task COMPLETE com auto-verificação mecânica (od/wc/sha256).
  • Reprodução local:
    uv sync --frozen
    uv run pytest -q
    uv run ruff check okami tests
    uv run bandit -c pyproject.toml -r okami -q
    uv run okami policy check --strict

🚀 Instalação / upgrade

# instalação nova (macOS / Linux)
curl -fsSL https://raw.githubusercontent.com/OkamiOps/Okami-Agent/main/scripts/install.sh | bash
# Windows (PowerShell)
irm https://raw.githubusercontent.com/OkamiOps/Okami-Agent/main/scripts/install.ps1 | iex

# upgrade de instalação existente
uv tool upgrade okami-agent   # ou: pip install -U okami-agent

okami setup     # configura em 2-3 cliques
okami doctor    # confirma que a versão instalada bate com o pyproject (sem version-drift)
okami chat      # conversa no terminal

📄 License

MIT (LICENSE) © 2026 OkamiOps.

🔗 Links

v0.10.0-beta — A Release da Auditoria 🐺

Choose a tag to compare

@github-actions github-actions released this 08 Jul 00:06

Okami Agent — v0.10.0-beta "A Release da Auditoria" 🐺

Desde o v0.9.0-alpha: 193 commits · 403 arquivos · +23.841/−1.021 linhas · suíte 2.408 → 3.364 testes
· lançada 2026-07-08.

⚠️ Beta. A superfície de comandos e config ainda pode mudar até a GA. Recomendado para uso real
(inclusive em VPS 24/7) — mas rode okami policy check --strict antes de expor publicamente. Ver o
CHANGELOG completo.

🌐 Site: https://okamiagent.com · 📚 Docs: https://okamiagent.com/docs


A história desta release

Primeiro beta: promoção do alpha por MATURIDADE, não por feature nova. Motivo — uma auditoria E2E
completa vs. Hermes (8 agentes, uso real com minimax) achou a causa-raiz de o agente parecer "lento e
travado" em campo, e 3 ondas de correção (P0 · P1 · P2) fecharam do sintoma à causa.

✨ Highlights

  • Auditoria E2E vs. Hermes — 6 causas-raiz encontradas e corrigidas (probe de tool-calling nativo,
    retry acoplado ao key-pool, corte de tool-result flat, formatação do Telegram quebrando em respostas
    longas, poll loop travado por STT/link-summary, memória poluída por auto-write mecânico).
  • Portabilidade real Windows/Mac/Linux — 14 breaks confirmados e corrigidos por auditoria adversarial
    (7 finders, 51 candidatos triados).
  • Provisão remota VPS-first — o agente bootstrapa o próprio acesso SSH + GitHub, sem depender de
    credenciais herdadas da máquina do usuário.
  • Multi-agente supervisionado — cada agente com seu próprio processo de gateway, watchdog e
    auto-restart (okami agent up/down/status/supervise).
  • STT ligado por padrão — nota de voz é transcrita automaticamente, com auto-install de
    faster-whisper/edge-tts.
  • Canais: 5 → 14 plataformas, todas bidirecionais (poll + webhook).
  • Computer-use embutido, opt-in e approval-gated, com 3 camadas de segurança.

🔎 Auditoria E2E vs. Hermes — por que o agente parecia lento

Sintoma em uso real: respostas lentas, tarefa simples travando, formatação quebrada no Telegram. Não era
1 bug — era uma cadeia de degradação silenciosa:

  • Probe de tool-calling nativo quebrado (TypeError silencioso): todo provider não-hardcoded (ex.:
    minimax) caía pro rail JSON-em-texto sem avisar — perdia tool-calling nativo, thinking vazava no texto,
    contexto inchava. Verdict agora persiste em disco (native_verdict.json).
  • Retry zero com 1 credencial só: max_retries estava acoplado ao tamanho do key-pool. Agora
    desacoplado (default 3) + timeout por tier (local 1800s / cloud 600s).
  • Tool-results cortados 8K/1.5K flat: o orçamento agora ESCALA com a janela do modelo (15%/30% do
    contexto, floor 8K/16K, cap 100K/200K).
  • Telegram dividia antes de formatar: resposta >4096 chars perdia toda a formatação HTML. Agora
    renderiza o HTML completo primeiro, divide por unidades UTF-16 com tags balanceadas entre cortes.
  • STT/link-summary bloqueavam o poll loop de todos os chats: agora rodam fora do poll loop
    compartilhado (spawn por chat) + cap de fila 32.
  • MEMORY.md poluído por auto-write mecânico: só remember/remember_user/reflect escrevem lá
    agora, com gate de durabilidade e dedup near-duplicate por Jaccard.
  • Hooks builtin sem bit +x: security-guidance/disk-cleanup vetavam toda tool com exit 126
    silencioso; corrigido o bit no pacote.
  • okami run alucinava tool-calls: sem tools disponíveis, o modelo fraco inventava chamadas
    inexistentes; agora avisa explicitamente.
  • Streaming × rail nativo em conflito: streaming_enabled agora consulta native_supported antes do
    tier.
  • E2E real (minimax), antes → depois: BLOCKED/alucinando/vazamento de <think>COMPLETE com
    verificação mecânica (sha256), formatação íntegra no Telegram, tokens_in 6.4-7K → 2.7K por turno.

🖥️ Portabilidade Windows/Mac/Linux — 14 breaks reais corrigidos

Auditoria por 7 finders + triagem rigorosa (51 candidatos → 14 confirmados). Novo
okami/core/platform_compat.py centraliza o que difere entre POSIX e Windows.

  • Crashes no Windows: os.getpgid/start_new_session=True/os.mkfifo corrigidos via
    terminate_pid() + popen_session_kwargs().
  • Segredo/chave exposto: os.chmod(0o600) é no-op no Windows (NTFS=ACL) — secure_chmod() cobre
    POSIX chmod+verificação e Windows ACL via icacls.
  • VPS headless: Playwright headless=True; backend pyautogui poda em Linux sem $DISPLAY; serviço
    systemd funciona sem login interativo.
  • Encoding/paths: pidfiles com encoding='utf-8' explícito; socket de controle usa
    tempfile.gettempdir() em vez de /tmp hardcoded.

🌐 Provisão remota VPS-first

O agente assumia credenciais herdadas do host (gh/git/ssh) — errado numa VPS 24/7 sem login herdado.
Agora ele monta o próprio acesso:

  • okami/integrations/provision.py: gera chave ed25519, importa chave privada, configura GitHub por
    token ou SSH, com segredo que nunca volta no retorno de tool.
  • Tools ssh_identity e git_auth (approval-gated).
  • Skill nativa acesso-vps guia o procedimento ponta-a-ponta.

🤖 Multi-agente supervisionado

Suporte a N agentes, cada um com gateway/cron/heartbeat/tasks próprios:

  • okami/gateway/supervisor.py: sobe cada agente como processo próprio, registro durável
    anti-PID-reuse, cross-plataforma.
  • okami gateway --agent <id> roda o gateway de um agente isolado.
  • CLI okami agent up | down | status | supervise, incluindo watchdog com auto-restart.

🎙️ Voz embutida + recursos nativos

  • STT (Whisper) ligado por padrão com auto-install de faster-whisper/edge-tts na primeira vez.
  • Plugins nativos (security-guidance, disk-cleanup, usage-observer) viajam no pip install.
  • Skills nativas embarcadas (criar-pull-request, depuracao-sistematica, pesquisa-web).

🧱 Subagentes em segundo plano

  • spawn aceita background=true: roda numa thread daemon e retorna na hora, avisando no chat de
    origem quando termina.
  • spawn_jobs (list|status|result|await): o agente pai lê o resultado de um background spawn de
    volta — fecha o loop de delegação.
  • Cap de concorrência (Semaphore, default 3) com fallback síncrono se a fila estiver cheia.
  • GC de jobs antigos (keep=50 + TTL 7d); reconcile no boot marca jobs órfãos como interrupted após
    restart do gateway.

🌐 WebFetch resiliente + fixes de robustez

  • User-Agent de navegador real resolve a classe "403 só por causa do UA".
  • smart_fetch: fallback automático para Playwright quando o fetch estático bate em 403/Cloudflare.
  • MCP stdio anti-zumbi: mata o subprocesso no timeout/EOF.
  • Tool send_message: entrega direta de texto por um canal sem rodar o LLM.

💬 Fix: formatação do Telegram

Tags HTML cruas emitidas pelo modelo viravam texto literal no Telegram. Corrigido com 3 mudanças: dica de
plataforma passa a pedir Markdown, to_html tolera HTML cru do modelo, e o fallback vira texto puro
limpo em vez de markup malformado.

⚡ Harness mais rápido

Streaming token-a-token ligado por default para tier local/weak — a primeira resposta passa a aparecer em
segundos em vez de minutos, resolvendo a maior causa de latência percebida em modelo local.

🖥️ Computer-use embutido

Nova tool computer_use (screenshot/click/type/key/scroll) com 3 camadas de segurança: desligada por
padrão, hardline-block contra combos destrutivos, e approval-gated por ação.

📡 Canais: 5 → 14 plataformas

Novos canais bidirecionais: DingTalk, WeCom, QQBot, WhatsApp, Signal, Matrix, SMS, BlueBubbles, Weixin —
todos com tool-policy por superfície e deny-by-default.

🧠 Mixture-of-Agents, Google Code Assist e LSP

  • Mixture-of-Agents (okami moa): roteia problemas difíceis pelos providers já configurados em
    paralelo e sintetiza a melhor resposta.
  • Google Code Assist (okami gemini login|status|quota): acesso ao tier grátis de Gemini via
    cloudcode-pa, sem billing.
  • Cliente LSP persistente: language server fica vivo entre edições, fechando o cold-start de ~8s por
    edição do pyright.

🐛 Caça adversarial de bugs

Múltiplas rodadas de revisão adversarial (workflows de dezenas de subagentes, com critério de ≥2/3
céticos confirmando cada achado) encontraram e corrigiram dezenas de defeitos reais ao longo do
desenvolvimento desta release — de um SSRF real a um path-injection, dead-code perigoso, race conditions
de roteamento e webhooks mortos em produção. Detalhe completo no CHANGELOG.

✅ Release verification

  • 3.364 testes passando (uv run pytest -q), subindo de 2.408.
  • Reprodução local:
    uv sync --frozen
    uv run pytest -q
    uv run ruff check okami tests
    uv run bandit -c pyproject.toml -r okami -q
    uv run okami policy check --strict

🚀 Instalação / upgrade

# instalação nova (macOS / Linux)
curl -fsSL https://raw.githubusercontent.com/OkamiOps/Okami-Agent/main/scripts/install.sh | bash
# Windows (PowerShell)
irm https://raw.githubusercontent.com/OkamiOps/Okami-Agent/main/scripts/install.ps1 | iex

# upgrade de instalação existente
uv tool upgrade okami-agent   # ou: pip install -U okami-agent

okami setup     # configura em 2-3 cliques
okami doctor    # confirma que a versão instalada bate com o pyproject (sem version-drift)
okami chat      # conversa no terminal

📄 License

MIT (LICENSE) © 2026 OkamiOps.

🔗 Links

v0.9.0-alpha — multi-vendor ready · ~94/100 parity

Choose a tag to compare

@msant262 msant262 released this 16 Jun 13:52

🐺 Okami Agent v0.9.0-alpha — a big capability jump. ~94/100 functional parity with the state of the art (NousResearch/hermes-agent), including multi-vendor readiness. From ~1.7k → 2,408 tests passing.

Public alpha: the command/config surface may still change between alphas. Before exposing it publicly, run okami policy check --strict.

Highlights

  • Multi-vendor ready — native Gemini (generateContent) and Bedrock (Converse/IAM) transports. Subscription-Claude today, ready to switch vendors when you need it; SDKs install on demand via okami deps.
  • Hardened security — scope-aware threat-pattern library (injection / C2 / anti-forensic / invisible-unicode), context-file injection scan (AGENTS.md/.cursorrules), MCP exfil scanner + OSV malware check, SSL CA-bundle preflight, and Tirith pre-exec content scanning (homograph / pipe-to-interpreter).
  • Provider & local-model resilience — reactive error recovery (401-refresh, image-shrink), multi-pass tool-call JSON repair, llama.cpp schema sanitization, stall-vs-truncation.
  • Platform UX — tiered display-config, long-turn heartbeat, panic-hook crash log, multi-marker silence, photo-album merge, image auto-extract from text, TTS.
  • Automation & extensibility — Blueprints (okami blueprint), Kanban swarm (okami swarm), plugin discovery (okami plugins), CDP browser supervisor, lightweight zero-dep web dashboard (okami gui).

New commands

okami deps · okami blueprint · okami swarm · okami plugins · okami gui · okami completion · okami mcp --auth · okami logs --level/--component/--since · okami doctor --fix

Fixed

~36 real defects found by adversarial subagent bug-hunts and fixed with TDD across research rounds #7–#13.

Full notes: CHANGELOG.md · parity scorecard: docs/COMPETITIVE_RESEARCH_13.md

🤖 Generated with Claude Code