← arizuko · concepts · getting started
What shipped, dated, terse. Reverse chronological. The chat broadcast for each release lives at the top of every block; the bullets below expand it for operators.
Agents lead with a reaction when a clear one fits, and never leave you hanging when you expect a reply.
Full notes: CHANGELOG § v0.60.1
Agents can post a checklist and update it in place, X replies actually thread, and Slack’s permanent send errors stop retry-storming.
edit it to tick tasks off (โ done ยท โณ running ยท โ pending), instead of a stream of โณ pings. send/reply/send_file now return the posted message id; the progress skill drives it, for multi-step turns only./send honours reply_to).Full notes: CHANGELOG § v0.60.0
Release notes stop broadcasting to every channel, and Slack thread replies no longer vanish.
#announce on its route target; the version-bump note posts only there, deduped per server. Untagged channels stay quiet; drop the tail to mute. See routing § modes.Full notes: CHANGELOG § v0.59.0
Chat links and webhooks can carry per-link handling instructions, “Connect GitHub” wires your own credentials, and agents stop dying or forgetting mid-chat.
<link-context>).Full notes: CHANGELOG § v0.58.0
Model API keys move into their own dashboard section, agents see only the tools they’re granted, and arizuko can call REST APIs like DNS providers directly — with the token brokered so it never enters the container.
/dash/me/env: set your ANTHROPIC_API_KEY / OPENAI_API_KEY / CODEX_API_KEY in a dedicated section, kept user-scoped.[[ext]] descriptors let arizuko call Cloudflare / Porkbun / Gandi / Namecheap DNS APIs directly; the token never enters the container.GITHUB_TOKEN) now resolves for MCP connector calls, not just the folder default.Full notes: CHANGELOG § v0.57.0
Users can bring their own API keys via the dashboard, Discord threads stay live after the bot’s first reply, and per-group settings are consolidated into one JSON config column.
/dash/me/secrets: store personal API keys (e.g. ANTHROPIC_API_KEY) encrypted at rest; they override the group’s keys for your spawns.@mention.thread_replies=false suppresses new thread creation only; in-thread replies still land in the thread.arizuko group thread-replies CLI.Full notes: CHANGELOG § v0.56.0
Security, correctness, and reliability across the board: dashboard CSRF guards, XSS fixes, 14 codex-audit bugs resolved, status messages that thread with replies, and timed tasks that no longer lose their next-run.
deliverTurn centralizes threading policy; status messages thread with the triggering reply.computeNextRun on enqueue failure; tasks no longer drop to NULL next_run.Full notes: CHANGELOG § v0.55.0
The operator dashboard gains four control planes and a redesigned conversation view that works like ChatGPT — session history, continue links, and search.
ASSISTANT_NAME labels the nav and page titles; DASH_ACCENT_COLOR overrides the accent per instance.Full notes: CHANGELOG § v0.54.0
The operator cockpit gains a live services grid and federated per-daemon control planes for onboarding and scheduled tasks. Includes the v0.53.1 / v0.53.2 sign-in fixes.
/dash/services/ probes all 8 core daemons concurrently; DNS failure = unknown, refused/timeout = err; linked tiles for built pages only.GET /v1/onboarding list + approve/deny/reprompt; /dash/onbod/ control plane./dash/timed/ shows the task table, loop health, and lag/stuck flags via routd /v1/tasks./auth/* proxies to authd instead of 302-ing to the internal URL; the refresh-token cookie is exchanged and identity headers stamped; branded login page.Full notes: CHANGELOG § v0.53.0
Reply threading lands on every platform, Slack @mentions reliably reach the agent, and a whole class of silent failures got fixed.
reply starts/joins the platform thread (Discord, Slack, Telegram); send is top-level; preference per group.app_mention events were silently dropped since launch; now wired; outbound converts CommonMark → mrkdwn.ARIZUKO_DEFAULT_MODEL sets the instance default model.Full notes: CHANGELOG § v0.52.0
Every operator action is now reachable both ways (agent MCP and HTTP REST), each world gets its own web address, and a big internal cleanup makes each daemon own its surface.
add_acl/remove_acl), invites (invite_create/list/revoke), and post/forward/quote/repost/voice from agents OR HTTP, one handler each.krons.fiu.wtf → that world), no per-host config; get_web_presence reports the public URL.index.html — /pub/<x>/foo/ now resolves.Full notes: CHANGELOG § v0.51.0
The gated monolith is gone: arizuko now runs as three focused daemons instead of one — and Telegram replies that were silently failing are fixed.
gated monolith is retired — auth, routing, and execution are now separate daemons (authd / routd / runed); the split is the only topology.Full notes: CHANGELOG § v0.50.0
The agent now formats and threads replies correctly across Telegram, Slack and Discord, and the reference docs match the running code again.
CUTOVER_SPLIT (dormant; default still runs gated).Full notes: CHANGELOG § v0.49.0
A correctness pass across the router and every adapter — agent audit logging restored, inbound messages no longer drop on transient failures, and reply threading fixed on email + Mastodon.
Full notes: CHANGELOG § v0.48.0
The docs site got a full redesign and the “ask the agent” chat became a real, persistent popup; a batch of platform-reply bugs are gone.
send returns the post URI.delete works, email history carries the trust signal, X/Telegram cursor fixes, feed verbs record into the thread.Full notes: CHANGELOG § v0.47.0
The agent stays in the conversation, scheduled tasks fire on time, and a batch of routing, delivery, and auth bugs are gone.
admitted_at, migration 0071).Full notes: CHANGELOG § v0.46.1
Agents can now search the whole message history, pin/edit/delete messages, and the entire cold-tier config is one reflective engine you export and apply as YAML with an auto-generated OpenAPI doc.
find_messages — FTS5 full-text search over messages (phrases, OR/NOT, prefix, NEAR; bm25-ranked + snippet).arizuko export/apply round-trip the cold tier.GET /openapi.json on every daemon — engine-generated, no codegen.reply is now the default response tool); FK CASCADE actually enforced.Full notes: CHANGELOG § v0.46.0
Five new dashd pages, three security fixes, and secrets now encrypted at rest. The operator dashboard is usable for day-to-day ops without touching .env or the DB.
/dash/invites/./dash/groups/{folder}/grants./dav/{folder}/ for file editing (CLAUDE.md, PERSONA.md, MEMORY.md).SECRETS_KEY separate from AUTH_SECRET. Plaintext rows rejected on startup.list_acl MCP tool now works; inject_message and escalate_group tier gates now enforced; tier-2 web mount scoped to own group dir; egress wildcard restricted to tier ≤ 1.Full notes: CHANGELOG § v0.42.0
Mint a public chat URL or a webhook URL with one MCP call; both flow into the same agent through the same store.
issue_chat_link / issue_webhook MCP tools) — agents mint URL-bound credentials on demand./chat/<token>/ and /hook/<token> — legacy /slink/* 301s to the new paths.arizuko token issue|list|revoke CLI plus REST /v1/route_tokens for operators and dashd.route_tokens table replaces groups.slink_token; no backfill — reissue by hand.Full notes: CHANGELOG § v0.41.0
Voice replies close the loop on the audio channel that Whisper opened months ago, and the router stops guessing JID kinds from sign bits — every adapter now emits typed addresses (telegram:group/…, discord:<guild>/<channel>) so routes, grants, and onboarding speak one language.
send_voice) — agent-controlled TTS via a bundled ttsd proxying Kokoro-FastAPI; Telegram/WhatsApp render as push-to-talk, Discord as inline audio. Per-agent voice via PERSONA.md frontmatter. Cached by hash.get_thread MCP) — pull just one topic out of a chat’s history; tier-gated like inspect_messages.POST /slink/<token>/mcp) — register a token-bound URL as a remote MCP server in Claude Code or any MCP client; three group-scoped tools (send_message, steer, get_round). Token is the auth./dash/profile) — one canonical sub across providers, with a collision-resolution UX when a new OAuth identity doesn’t fit silently.telegram:group/* scopes to groups but not DMs; sign-bit guessing retired across the router and grants tables.Full notes: CHANGELOG § v0.33.0
URL polish on the slink round-handle protocol shipped in v0.32.0. The verb does the work now — POST extends a round, GET observes it — and special tokens (/turn/, ?steer=) disappear.
GET /slink/<token>/<id>, …/status, …/sse; POST /slink/<token>/<id> means “steer this round.”arizuko send and /pub/slink/reference/ updated to the new shape; old paths retired.Full notes: CHANGELOG § v0.32.2
Quiet bugfix release. Closes a cross-world spam vector revealed by v0.32.0’s own release broadcast: tier-1 world agents could send to chats that route to other worlds, producing the same notice 2–4× per chat.
send, send_file, reply, post, like, dislike, delete, edit, forward, quote, repost) resolves the JID’s owning folder and checks subtree containment. No tier bypass; even the instance root cannot direct-send across worlds.delegate_group/escalate_group instead. Unrouted JIDs are denied for every caller.Full notes: CHANGELOG § v0.32.1
Slink becomes the universal “drop a message, observe the round” surface. Every agent run is now a first-class object with a stable handle, pageable frames, an SSE stream that closes cleanly, and steering for chained follow-ups — useful for cron jobs, web pages, and scripts that need to talk to the agent without a full chat client.
POST /slink/<token> returns {user, turn_id, status:pending}; the round is observable via snapshot, cursor paging, cheap status, or live SSE with a terminal round_done event.chained_from linking the two.arizuko send CLI — inject messages from the server into any group via slink; --wait, --stream, --steer flags./pub/concepts/slink.html and /pub/slink/reference/.spawn_ttl_days, no daily cleanup loop. Groups exist until explicitly removed.crackbox; davd reports health.Full notes: CHANGELOG § v0.32.0
Everything before v0.32.0 lives in the canonical CHANGELOG.md on GitHub.