Releases: OkamiOps/Okami-Agent
Release list
🐺 Okami Agent v0.15-beta — Native Tools, Provider Control & Telegram
🐺 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/modelreports 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;
/steeris 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 doctorFresh install — Linux, macOS or WSL
curl -fsSL https://raw.githubusercontent.com/OkamiOps/Okami-Agent/main/scripts/install.sh | bashFresh install — Windows PowerShell
irm https://raw.githubusercontent.com/OkamiOps/Okami-Agent/main/scripts/install.ps1 | iexNo 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;...
v0.14.3-beta 🐺
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 dookami.yamlmesmo quando-p/--providerpedia outro. Agora a flag define o provider da sessão de chat (banner, rótulo de modelo e turnos consistentes).okami run/okami taskjá honravam-p.
✅ Cobertura
- Novo teste que executa
okami chat -pde verdade e exige que o banner reflita o provider da flag.
Atualizar: okami upgrade.
v0.14.2-beta 🐺
Hotfix do chat interativo.
🐛 Correção
okami chatnã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 chatde 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 🐺
Correções de acompanhamento à instalação e à telemetria de uso.
📦 Instalação
- Detecção de instalação-fantasma no PATH — um
okamiantigo instalado por outro método (ex.:~/.local/bin) que fique à frente noPATHmascarava o recém-instalado, eokami --versioninsistia 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 🐺
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 rodeokami policy check --strictantes 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 endurecidos —
install.sh/install.ps1verificam o binário recém-instalado e
reportam versão antiga → nova (antes, atualizavam em silêncio);install.ps1trata long-paths do
Windows. - Docker com estado persistente —
docker-compose.ymlguardaOKAMI_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.Dockerfilereconstruído multi-stage,uv sync --frozen, não-root,
HEALTHCHECK. okami configganha 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 deuv tool install --force, com
relatório final de versão antiga → nova.--checkreporta se há atualização disponível sem aplicar
nada;--yespula 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.longpathsno git quando necessário, evitando falhas silenciosas em instalações com caminho
profundo.
🐳 Docker
deploy/docker-compose.yml:OKAMI_HOMEpassa 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 upnovo.deploy/Dockerfile: reescrito multi-stage, comuv sync --frozen(build reprodutível a partir do
lockfile), usuário não-root,HEALTHCHECKconfigurado e imagens base pinadas.
⚙️ Config — troca de provider/modelo pelo menu
okami configganha uma opção de picker interativo de provider/modelo, reaproveitando o mesmo
fluxo do comandookami model(aliasessonnet/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 emokami.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 --strictantes 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 terminalNenhuma 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
- 🌐 Landing: https://okamiagent.com
- 📚 Documentação: https://okamiagent.com/docs
- 💻 Agente (este repo): https://github.com/OkamiOps/Okami-Agent
- 🎨 Landing page (fonte): https://github.com/OkamiOps/Okami-Agent-LP
- 📋 Changelog completo: CHANGELOG.md
v0.13.0-beta — A Imagem Real 🐺
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 rodeokami policy check --strictantes 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 (
401no 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/UAcodex_cli_rs+
ChatGPT-Account-Id), com fallback deaccount_idvia~/.codex/auth.jsonquando o claim do JWT não
vem preenchido (o caso comum).- Bug latente corrigido de graça: o mesmo retrofit de headers em
transports.pyconserta um403
que já existia na VPS no chat codex normal — nunca tinha sido diagnosticado até agora. - Host de imagem precisa ser
gpt-5.5—gpt-5.1retornaHTTP 400(documentado pra não reintroduzir). - Skill
editar-pdf(nova) —info/extract/metadata/patch/rotate/merge/splitvia
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
.gitignorenos dois caminhos. - SSRF confirmado sem regressão —
net_guardjá 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.pyreescrito: endpointchatgpt.com/backend-api/codex/responses+ toolimage_generation
(gpt-image-2) em vez do REST pago que dava401.- Texto→imagem e imagem→imagem na mesma chamada (
input_imageparts) — não precisa de duas
requisições separadas. - Host obrigatoriamente
gpt-5.5(gpt-5.1dáHTTP 400). codex_headers.pynovo: headers anti-Cloudflare;account_idresolvido via
oauth.codex_account_id()→ claim do JWT (raramente presente) → fallback
~/.codex/auth.json→tokens.account_id.transports.py: mesmo retrofit de headers no chat codex normal — conserta um403latente na VPS que
vinha da mesma causa-raiz.- Fallback automático pra
flux/openrouter(IMAGE_BACKENDS, mesmo padrão dovideogen);
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:pypdfcomo dependência lazy, comandosinfo/extract/metadata/
patch/rotate/merge/split.
🛡️ Segurança + quick wins
- SSRF:
net_guardauditado e confirmado já sólido (bloqueia metadata endpoint, IP privado, redirect,
respeitaallow_privateexplícito) — plugado emweb_extract/browse/references; documentado sem
necessidade de mudança de código. - Busca de arquivos com backend
ripgrep, fallback pure-Python automático quandorgnã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 nocore_blocktodo turno; shipado como default
versionado emokami/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 --strictantes 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 terminalNenhuma 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
- 🌐 Landing: https://okamiagent.com
- 📚 Documentação: https://okamiagent.com/docs
- 💻 Agente (este repo): https://github.com/OkamiOps/Okami-Agent
- 🎨 Landing page (fonte): https://github.com/OkamiOps/Okami-Agent-LP
- 📋 Changelog completo: CHANGELOG.md
v0.12.0-beta — O Fluxo Real 🐺
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 rodeokami policy check --strictantes 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 aceitavamset_no_interrupt, param que o endpoint do gateway injeta
desde a onda P0 (7939d6e) —TypeErrormascarado como❌ errorem 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_taskganhaset_no_interrupt, encadeado no_hkw(padrão doset_remote);
Harness.__init__aceita e guarda (self._set_no_interrupt, no-op no CLI). - Efeito colateral bom: o demote guard do
/busyinterrupt — morto até agora, nada setava
no_interrupt=True— passa 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_sourceencadeadosrun_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,/stope/retrylimpam 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_keydireto) 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_idreal);customreetiquetado 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
.envmanda 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ãoNOME=valorcom 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_secretresolvevault > env > .env;apply_vault_to_environpopulaos.environno boot (config._load_env) — providers/oauth leem
do cofre sem editar nada. - Fluxo de captura:
vault_set→deleteMessageno 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
- 🌐 Landing: https://okamiagent.com
- 📚 Documentação: https://okamiagent.com/docs
- 💻 Agente (este repo): https://github.com/OkamiOps/Okami-Agent
- 📋 Changelog completo: CHANGELOG.md
v0.11.0-beta — Ferramentas e Modelos 🐺
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 rodeokami policy check --strictantes 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/alias —
okami model,/model --savee/modelsnumerado, com
did-you-mean em vez de override silencioso. - Schema rico nas tools —
enum/default/minimum/maximumexplí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),
scriptsarxiv/wikipediaempesquisa-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âmicosfast/smart, validação contra
o catálogo de providers, extensível viamodel_aliases:no yaml.okami model(novo comando): picker interativo, switch direto,list --json./modelno gateway/Telegram passa a usar o MESMO resolver — ganha--save(persiste em
okami.local.yaml) e/modelsnumerado (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_schemapassa a emitirenum/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.backgroundsem tipoboolean— a string"false"viravaTrueno runtime. todo_write: leitura sem args, merge porid, statuscancelled(paridade com oTODO_SCHEMAdo
Hermes).
✏️ Edit — paridade de cadeia de estratégias fuzzy
- Novas estratégias:
escape_normalized(\nliteral),trimmed_boundary,block_anchor(ancora
primeira+última linha,difflibno 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_fileganhaline_numbersopt-in.
🧩 Skills práticas
watchers: RSS/GitHub/JSON com poll + watermark dedup — a base de "me avisa quando X mudar" via
cron → Telegram.pesquisa-webganha scripts:arxiv+wikipedia, com HTTP compartilhado.stocks: cotações via Yahoo Finance, sem API key.github: CI/merge/issues,gh-first com fallback viagh_api.py.- Mecanismo novo: frontmatter
requires_tools/fallback_for_toolsesconde 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
COMPLETEcom 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
- 🌐 Landing: https://okamiagent.com
- 📚 Documentação: https://okamiagent.com/docs
- 💻 Agente (este repo): https://github.com/OkamiOps/Okami-Agent
- 📋 Changelog completo: CHANGELOG.md
v0.10.0-beta — A Release da Auditoria 🐺
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 rodeokami policy check --strictantes 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_retriesestava 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/reflectescrevem lá
agora, com gate de durabilidade e dedup near-duplicate por Jaccard. - Hooks builtin sem bit +x:
security-guidance/disk-cleanupvetavam toda tool com exit 126
silencioso; corrigido o bit no pacote. okami runalucinava tool-calls: sem tools disponíveis, o modelo fraco inventava chamadas
inexistentes; agora avisa explicitamente.- Streaming × rail nativo em conflito:
streaming_enabledagora consultanative_supportedantes 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_in6.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.mkfifocorrigidos 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/tmphardcoded.
🌐 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_identityegit_auth(approval-gated). - Skill nativa
acesso-vpsguia 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
spawnaceitabackground=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
interruptedapó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
- 🌐 Landing: https://okamiagent.com
- 📚 Documentação: https://okamiagent.com/docs
- 💻 Agente (este repo): https://github.com/OkamiOps/Okami-Agent
- 📋 Changelog completo: CHANGELOG.md
v0.9.0-alpha — multi-vendor ready · ~94/100 parity
🐺 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 viaokami 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