{"slug": "zot-now-supports-claude-opus-4-8", "title": "Zot now supports Claude Opus 4.8", "summary": "The coding agent Zot now supports Claude Opus 4.8, adding the model to its catalog of over 20 providers including OpenAI, Google Gemini, and local models. The lightweight terminal agent, distributed as a single static Go binary, allows users to interact via TUI, one-shot print, JSON events, or RPC while editing files and running shell commands.", "body_md": "zot. Yet another coding agent harness.\n\nLightweight. Single binary. Written (vibe-slopped) in Go. In beta forever.\n\nask anything, or type /help to see commands.\n\n```\ncurl -fsSL https://www.zot.sh/install.sh | bash\n```\n\n[About](#about)\n\nzot is a minimal terminal coding agent, shipped as one static Go binary. No runtime. No Docker. No plugin system with a dedicated package manager. Just the agent loop done well. Drop it on your `$PATH`\n\nand go.\n\nIt talks to Anthropic, OpenAI/Codex/Responses, Kimi, DeepSeek, Google Gemini/Vertex, GitHub Copilot, Bedrock, Azure OpenAI, OpenRouter, Groq, Cerebras, xAI, Together, Hugging Face, Mistral, Moonshot, Z.AI, Xiaomi, MiniMax, Fireworks, Vercel AI Gateway, OpenCode, Cloudflare AI, and local OpenAI-compatible models (like ollama), edits your files, runs your shell, and even answers your Telegram DMs. Bring your own API key or log in with a Claude, ChatGPT/Codex, Kimi Code, or GitHub Copilot subscription. DeepSeek and Google are API-key only.\n\nFour ways to run it:\n\n**interactive**- full TUI with streaming output, slash commands, queued messages, and an inline side-chat.** print**-`zot -p`\n\n, one-shot, final assistant text to stdout. Great for shell pipelines.**json**-`zot --json`\n\n, NDJSON events to stdout. Perfect for scripts and CI.**rpc**-`zot rpc`\n\n, long-lived child process, NDJSON commands on stdin and events on stdout. Drop zot into apps written in any language.[See the wire format.](https://github.com/patriceckhart/zot/blob/main/docs/rpc.md)\n\n[Providers](#providers)\n\nzot ships a broad provider catalog so `/login`\n\n, `/model`\n\n, `--provider`\n\n, and `--list-models`\n\nall speak the same IDs.\n\n**Subscription-capable**- Anthropic Claude Pro/Max (`anthropic`\n\n), OpenAI Codex / ChatGPT Plus/Pro (`openai-codex`\n\n), Kimi Code (`kimi`\n\n), and GitHub Copilot (`github-copilot`\n\n).**Direct API providers**- Anthropic, OpenAI Chat Completions, OpenAI Responses, DeepSeek, Google Gemini, Kimi/Moonshot, Moonshot CN, Groq, Cerebras, xAI, Together AI, Hugging Face Router, OpenRouter, Mistral, Z.AI, Xiaomi/MiMo token-plan regions, MiniMax global/CN, Fireworks, Vercel AI Gateway, and OpenCode/OpenCode Go.**Cloud/platform providers**- Amazon Bedrock, Google Vertex AI, Azure OpenAI, Cloudflare Workers AI, and Cloudflare AI Gateway.** Local/compatible**- Ollama and OpenAI-compatible local endpoints via`--base-url`\n\n.\n\nUse `/login`\n\nto store API keys or subscription credentials. The model picker only shows models from providers currently available through env vars, `auth.json`\n\n, Kimi CLI fallback, or local Ollama.\n\n[Models](#models)\n\n`--list-models`\n\nand `/model`\n\nshow the merged catalog across every provider. Built-in entries cover Claude, GPT/Codex, Gemini/Gemma, Kimi/Moonshot, DeepSeek, Groq-hosted Llama/Gemma/Compound, OpenRouter-routed models, Bedrock model IDs, Vertex model IDs, Azure OpenAI deployments, Copilot models, and other provider-specific entries.\n\nzot also merges live IDs discovered from `GET /v1/models`\n\nusing stored API keys, cached for six hours in `$ZOT_HOME/models-cache.json`\n\n. Speculative catalog entries are included too; they start working as soon as the upstream provider enables them.\n\nCustom models can be added with `$ZOT_HOME/models.json`\n\n. User entries take precedence over both baked-in and live-discovered models, and support provider IDs such as `groq`\n\n, `openrouter`\n\n, `github-copilot`\n\n, `amazon-bedrock`\n\n, `google-vertex`\n\n, `azure-openai-responses`\n\n, `fireworks`\n\n, `vercel-ai-gateway`\n\n, `mistral`\n\n, and `xai`\n\n.\n\n[Tools](#tools)\n\nFour built-in tools. Zero ceremony. The minimum viable toolbox for an agent that actually ships code.\n\n`read`\n\n- read text files, or render PNG / JPG / GIF / WebP inline on modern terminals.`write`\n\n- create or overwrite files, making parent directories as needed.`edit`\n\n- one or more exact-match replacements in an existing file.`bash`\n\n- run a shell command in the session cwd with merged stdout/stderr and a timeout.\n\nType `/jail`\n\nto confine every tool to the current directory. Bash refuses `sudo`\n\n, `rm -rf /`\n\n, and other obvious escape patterns. It's a guardrail against accidents, not a hard security boundary.\n\n[Extensions](#extensions)\n\nzot can be extended in any language via a subprocess plus JSON-RPC protocol. Extensions can register slash commands, expose new tools to the model, intercept tool calls for permission gates, and open interactive extension-owned panels inside the TUI.\n\nNothing installs automatically. Opt in per machine with `zot ext install`\n\n, or per run with `zot --ext ./path`\n\nwhile hacking on one. Each extension gets its own directory, so persistent state like todo data, settings, or caches can live beside the extension itself.\n\n```\nzot ext install ./my-extension    # copy into $ZOT_HOME/extensions/\nzot ext list                      # show what's loaded\nzot ext logs my-extension -f      # tail stderr\nzot update                        # also fast-forwards every git-installed extension\n```\n\nReference implementations live under `examples/extensions/`\n\nin Go, TypeScript, and Node. The protocol now also covers extension-driven panels, key routing, and redraws for building interactive tools inside zot itself. [Read the protocol spec.](https://github.com/patriceckhart/zot/blob/main/docs/extensions.md)\n\n[Skills](#skills)\n\nSkills are per-folder `SKILL.md`\n\nfiles with a YAML frontmatter header. zot discovers them at startup, surfaces their names in the system prompt, and exposes a built-in `skill`\n\ntool the model uses to load the body on demand. The agent pulls in exactly the instructions it needs, nothing more.\n\nBuilt-in and user-installed skills load by default from `.zot/skills/`\n\n, `$ZOT_HOME/skills/`\n\n, `.claude/skills/`\n\n, or `.agents/skills/`\n\n. Use `--no-skill`\n\nto disable all skill discovery. [Read the skill format.](https://github.com/patriceckhart/zot/blob/main/docs/skills.md)\n\n[Sessions](#sessions)\n\nEvery turn is appended to a JSONL transcript under `$ZOT_HOME`\n\n. Resume the last session with `-c`\n\n, pick one with `-r`\n\n, or browse them all from `/sessions`\n\n. Jump between past turns with `/jump`\n\nwithout editing history. Free up context without losing the thread with `/compact`\n\n, which summarizes the transcript into a single message and keeps the last few exchanges verbatim. zot auto-compacts when you cross 85% of the model's context window.\n\n`/session`\n\ncovers the heavier ops on the running transcript. `export`\n\nwrites it to a portable `.zotsession`\n\nfile (default `~/Downloads`\n\n) so you can hand it to another machine or user; `import`\n\npulls one back in as a first-class resumable session. `fork`\n\nbranches from any past user message into a new session (parent + fork point recorded in the new meta) so you can try a different direction without polluting the original thread; `tree`\n\nshows every branch in this directory with parent/child indentation and lets you switch into any of them.\n\nExport covers only the main chat thread — messages, tool calls, tool results, compactions, and usage. `/swarm`\n\nsubagents are not bundled: their per-agent state lives in a unix-socket inbox and a session file on disk, neither of which round-trips through a JSONL file. To share what an agent said, copy it out of the transcript view manually.\n\n[Side chat](#side-chat)\n\nType `/btw`\n\nto open a side-chat overlay with the full main session as frozen context. Ask quick clarifying questions without bloating the main thread. Nothing the side chat says is appended to the transcript or persisted to the session file, so your running context window stays lean.\n\n```\n/btw     # open the overlay\n/btw does PUT replace the whole resource?\n```\n\n[Swarm](#swarm)\n\nBackground subagents that run alongside your main session. Type `/swarm`\n\nto open the dashboard, then `n`\n\nto spawn one. Each agent is a separate `zot`\n\nsubprocess with its own model loop, its own persistent session file, and its own chat in the dashboard — but they all run in the same working directory as the host, so they see and edit the same files you do. You keep working in your main session; the subagents work in parallel.\n\nAgents edit the same files you do. They use the same `read`\n\n/ `write`\n\n/ `edit`\n\n/ `bash`\n\ntools as the main agent against the host's working directory. There's no per-agent worktree or branch. If you need parallel edits on isolated checkouts, set that up yourself with `git worktree`\n\noutside zot.\n\nPress `enter`\n\non any row to open that agent's transcript — a chat overlay with an always-on inline composer at the bottom, streaming auto-follow, and a busy spinner showing the agent's current activity (`thinking`\n\n, `tool: edit_file`\n\n, etc.). Type and hit `enter`\n\nto send a follow-up; `esc`\n\nreturns to the dashboard.\n\nCommon shapes from the command line so scripts and headless flows work the same as the dashboard:\n\n```\n/swarm                            # open the dashboard\n/swarm new <task>                 # spawn an agent\n/swarm new --model gpt-5 <task>    # pin the new agent to a model\n/swarm logs <id>                  # jump straight into one transcript\n/swarm send <id> <text>           # send a follow-up without the dashboard\n/swarm resume                     # pick a stopped agent to bring back\n/swarm kill <id>                  # stop a running agent (its state stays)\n/swarm remove <id>                # delete the agent's session and state\n```\n\nAgents are scoped to the session that spawned them and only show up in that session's dashboard. They persist across zot restarts under `$ZOT_HOME/swarm/agents/<id>/`\n\n; press `R`\n\non a detached row to bring one back on the same session and inbox socket so the conversation continues where it left off.\n\nEverything per-agent (session file, events log, inbox socket, meta) lives under `$ZOT_HOME/swarm/agents/<id>/`\n\n. The agent's actual code edits land directly in your repo; track them with normal `git status`\n\n/ `git diff`\n\n.\n\n`/session export`\n\ndoes not bundle subagents — a `.zotsession`\n\nis just the main chat transcript, and a swarm agent's state (session file, unix-socket inbox) is machine-local and can't round-trip through one. To share what an agent said, copy it out of the transcript view manually.\n\nWith [ /settings](#settings) -> auto-swarm on, the main agent can also fork sub-agents on its own when a request naturally splits into independent parallel work. See\n\n[Settings](#settings)for the details.\n\n[Settings](#settings)\n\nType `/settings`\n\nto open a dialog with every persistent setting. `up`\n\n/`down`\n\nto navigate, `enter`\n\nor `space`\n\nto change the selected row, `esc`\n\nto close. Changes are written to `$ZOT_HOME/config.json`\n\nand take effect on the next turn — no restart needed.\n\n**render images when supported** — draw screenshots and images returned by `read`\n\ninline using the terminal's image protocol (Ghostty, Kitty, iTerm2, WezTerm), or fall back to a text placeholder. Auto-detected from `TERM_PROGRAM`\n\n; the toggle overrides the detection. The row is greyed out and forced off on terminals that don't speak any image protocol.\n\n**auto-swarm** — let the main agent spawn background sub-agents in parallel via a built-in `swarm_spawn`\n\ntool. Off by default. When on, the tool is registered with the running agent and the system prompt gains a short addendum telling the model to delegate independent sub-tasks proactively (“implement A and B”, “investigate three files”). The main turn keeps running immediately after each spawn; you can monitor / message / kill the sub-agents from [ /swarm](#swarm) just like manually-spawned ones.\n\nAs soon as the last sub-agent in a batch finishes its initial task, zot injects a single `[auto-swarm update]`\n\nmessage back into the main chat recapping each agent's status, task, and transcript tail. The main agent then writes a short follow-up summary referencing the agents by id, so you stay in one conversation while the work fans out. Flipping the toggle off mid-session removes `swarm_spawn`\n\nfrom the live agent and strips the addendum on the next turn — the model stops trying to delegate.\n\n**thinking level** — choose reasoning depth for supported models. It is off by default. The available levels are off (no reasoning), minimum (~1k thinking tokens), low (~2k), medium (~8k), high (~16k), and maximum (~32k). zot maps those levels to each provider's closest supported wire format, such as token budgets for Claude and Gemini, Gemini's thinking-level enum, or OpenAI-style reasoning effort. The current status bar shows it as `thinking: <level>`\n\n, and the setting can also be changed per run with `--reasoning`\n\n.\n\n[Tool gate](#tool-gate)\n\nRun with `--no-yolo`\n\nto confirm every tool call before it runs. A dialog shows the tool name and a one-line preview of its args with four choices: yes, yes-always-this-tool-this-session, yes-always-this-session, no. Type `/yolo`\n\ninside the TUI to drop the gate for the rest of the session.\n\nThe flag is interactive-only. In `-p`\n\n, `--json`\n\n, and `rpc`\n\nmodes tools still run freely so scripts and automation keep working.\n\n[Model fallback](#model-fallback)\n\nWhen a turn fails because of a recoverable provider error — expired token (`401`\n\n), permission denied (`403`\n\n), rate limit (`429`\n\n), provider outage (`502`\n\n/`503`\n\n/`504`\n\n), or a transient network failure — zot opens an inline rescue picker over the chat instead of just painting a red banner.\n\nThe picker is the same vertical list / fuzzy filter UI as `/model`\n\n, but only shows models from providers you're currently logged in to (env vars, `auth.json`\n\n, Kimi CLI fallback, ollama). That includes API keys stored for any provider in the built-in catalog. The failed model is excluded. Pick one and `enter`\n\nretries the same prompt on the new model.`esc`\n\ndismisses.\n\nBefore the rescue picker even has a chance to fire, every provider client does up to two silent retries with short backoff (250ms, 750ms) on `502`\n\n/`503`\n\n/`504`\n\nand connection-reset / EOF-before-headers errors. Most edge-proxy blips disappear without you ever seeing the picker.\n\nA rescue retry intentionally drops launch-time `--api-key`\n\nand `--base-url`\n\noverrides before rebuilding the agent — those are usually the cause of the failure — and re-resolves credentials from env vars, `auth.json`\n\n, and provider defaults. Use `/model`\n\nwhen you want overrides to stick.\n\nNo configuration is required — the candidate list is built dynamically from your active credentials. Bad-request, context-length, and serialization errors are NOT routed to the rescue picker because switching models won't fix them; those still surface as a normal error.\n\n[System prompt override](#system-prompt-override)\n\nDrop a `SYSTEM.md`\n\nin `$ZOT_HOME`\n\nto replace the built-in identity and guidelines for every run. Per-invocation, `--system-prompt`\n\nstill wins; delete the file to revert to the default. Use `--append-system-prompt`\n\n(repeatable) to layer extra instructions on top without blowing the default away.\n\n[Embedding](#embedding)\n\nTwo ways to drive zot from another program. Both share the same event schema, so transcripts captured by one can be replayed through the other.\n\n**Go, in-process**- import`github.com/patriceckhart/zot/packages/agent/sdk`\n\n. One`Runtime`\n\nper project;`Prompt(ctx, text, images)`\n\nreturns a channel of`Event`\n\n. Example in`examples/sdk/`\n\n.**Any language, out-of-process**- spawn`zot rpc`\n\nas a subprocess and exchange NDJSON over its stdin/stdout. Reference clients for Python, Node, shell, and Go live under`examples/rpc/`\n\n.[See the wire schema.](https://github.com/patriceckhart/zot/blob/main/docs/rpc.md)\n\n[Telegram](#telegram)\n\nPair zot with a BotFather token and DM it from anywhere. It reads, writes, edits, and runs, same as the TUI. Photos and image attachments are forwarded to vision-capable models.\n\nTwo ways to run it. Inside a live TUI session, type `/telegram`\n\n(or `/tg`\n\n) to connect. DMs become prompts in the same session; what you type in the TUI mirrors back to Telegram as `you: …`\n\nwith replies prefixed `zot: …`\n\nso the Telegram thread stays a complete record. A `· tg ·`\n\ntag appears in the status bar while connected.\n\nOr run a headless background daemon for a server:\n\n```\nzot telegram-bot setup     # paste your BotFather token\nzot telegram-bot start     # detach and run in the background\nzot tg logs -f             # tail the bot log\n```\n\n[Install](#install)\n\nmacOS and Linux:\n\n```\ncurl -fsSL https://www.zot.sh/install.sh | bash\n```\n\nWindows (PowerShell):\n\n```\niwr -useb https://www.zot.sh/install.ps1 | iex\n```\n\nGo:\n\n```\ngo install github.com/patriceckhart/zot/cmd/zot@latest\n```\n\nPrefer prebuilt tarballs? [Every release](https://github.com/patriceckhart/zot/releases) ships archives for Linux, macOS, and Windows on amd64 and arm64 (except windows/arm64) with a `checksums.txt`\n\nfile.", "url": "https://wpnews.pro/news/zot-now-supports-claude-opus-4-8", "canonical_source": "https://www.zot.sh", "published_at": "2026-05-29 05:48:21+00:00", "updated_at": "2026-05-29 06:18:59.420220+00:00", "lang": "en", "topics": ["ai-tools", "ai-agents", "ai-products", "large-language-models", "ai-infrastructure"], "entities": ["Anthropic", "OpenAI", "Google", "GitHub Copilot", "DeepSeek", "Claude Opus 4.8", "zot", "Kimi"], "alternates": {"html": "https://wpnews.pro/news/zot-now-supports-claude-opus-4-8", "markdown": "https://wpnews.pro/news/zot-now-supports-claude-opus-4-8.md", "text": "https://wpnews.pro/news/zot-now-supports-claude-opus-4-8.txt", "jsonld": "https://wpnews.pro/news/zot-now-supports-claude-opus-4-8.jsonld"}}