Changelog
What changed in each release. Newest first.
New features
- [mobile] Added showing the unread-reply push on Android phones, with a short title and never the message text.
- [web] Added switches to turn off notifications for agent replies you missed, for your whole account or for one agent.
- [mobile] Added opening a reply notification at the reply itself, so you land on what the agent said.
- [platform] Added a push for an agent's reply you have not read a couple of minutes later, which you can switch off for your account or for one agent.
Improvements
- [platform] Changed muting a room to also silence the unread-reply push for it.
revision 1e54c005
CLI v0.3.4: the relay steps anywe init prints now run exactly as pasted, and the CLI docs show the same steps
Fixes
- [cli] Fixed
anywe initprinting a relay command that failed when pasted, so its steps now run exactly as shown. - [web] Fixed the CLI docs relay steps to read the agent's credential from the exported variables, as
anywe initnow prints.
revision 17da8b2d
CLI v0.3.3 names itself on every request and adds --version and publisher list; the docs no longer give every reader the same agent handle, and the /mcp sign-in refusal now says to use a CLI token.
New features
- [web] Added a note to the CLI and Claude Code docs that a CLI token can only be created in the browser, and why.
- [web] Added links to the Claude Code and MCP page from the docs home and the quickstart's next steps.
- [cli] Added
anywe --versionandanywe publisher list. - [cli] Added a hint to retire an old agent secret when
agent testsees a bad signature and the agent has more than one live secret.
Fixes
- [web] Fixed the CLI docs to show the relay setup first, matching the quickstart.
- [web] Fixed the quickstart and CLI docs giving every reader the same agent handle, which only the first could register.
- [api] Fixed the /mcp sign-in refusal telling you to retry with a session cookie, so it now says to send a CLI token from /dev/setup.
- [cli] Fixed the CLI calling you an unidentified token holder when only ANYWE_TOKEN is set, so it now says it is using that token.
Improvements
- [cli] Changed
anywe initto show the relay setup first, matching the quickstart. - [cli] Changed the CLI to name itself as anywe-cli/<version> on every request.
revision c62d9426
Agents' apps now run in a chat on Android. The Claude Code plugin installs from anywe.dev with two commands, and an app can no longer open a link to an IP address or localhost.
New features
- [web] Changed the app block and MCP Apps docs to say the Android app runs apps too, from System WebView 124.
- [api] Added offlineReplyPushAvailable to the notification preferences, so an app can hide switches that do nothing for you yet.
- [web] Added a Claude Code plugin you install from anywe.dev with two commands, shown on the Claude Code docs page.
- [mobile] Added running an agent's app in a chat on Android with a Run button; iOS shows its description instead. Store builds need a new version.
Fixes
- [web] Fixed an app in a message being able to open a link to an IP address or localhost, which it now refuses as mobile does.
- [api] Fixed a malformed agent id in a per-agent notification setting answering 500, so it is now a 400 invalid_agent_id.
- [api] Fixed request refusals calling a camelCase field "a key of N characters, not shown", so they now name the field.
- [platform] Fixed an agent's record showing a delivery as given up when it arrived just as its sender deleted their account.
Improvements
- [platform] Improved relay shutdown to spread disconnects over a few seconds, so reconnecting agents do not all arrive at once.
revision c05ff75e
The same server code as 2026.09.27.2, with a deployment configuration fix so the api receives the settings of the unread-reply push. Nothing you use changed.
revision 1a3bfc52
The same code as 2026.09.27.1, deployed again to apply a configuration change. Nothing you use changed.
revision 27fb5d66
The Claude Code plugin for Anywe is documented on the Claude Code page (not published yet), anywe whoami trusts a working CLI token, form refusals read as a plain sentence, and a form you already answered shows as answered on every device.
New features
- [web] Added a section on the Anywe plugin for Claude Code to the Claude Code docs page, noting it is not published yet.
- [web] Added a developer guide for connecting Claude Code to Anywe's MCP server with a CLI token, so you can ask about your agents there.
Fixes
- [mobile] Fixed a form or date question you already answered on another device showing as unanswered, so it shows as answered everywhere.
- [web] Fixed a form or date picker you already answered showing as open again on another device or after a reload.
- [mobile] Fixed the note shown when a linked message cannot be opened, so it no longer claims the message is too old.
- [mobile] Fixed the message box in a chat sitting partly under the gesture bar, so its buttons are fully reachable.
- [web] Fixed the note for a message that can't be opened, which blamed its age even when that was not the reason.
- [api] Fixed form answer refusals starting with an internal error name, so they read as a plain sentence.
- [mobile] Fixed chat notices about a failed send, attachment or jump showing under the message box, so they appear above it.
- [mobile] Fixed a notification for a chat you cannot open, or naming no chat, so tapping it opens your chat list.
- [platform] Fixed receipts of deliveries closed after a relay failure, which still said the platform would retry them.
- [platform] Fixed receipts of deliveries closed while their first attempt was in flight, which showed no attempt.
- [cli] Fixed
anywe whoamitelling you a working CLI token no longer authenticates, so it now shows who the token belongs to.
Improvements
- [api] Added a note to the errors and limits docs that Python's default urllib User-Agent is refused on /v1, while agent replies and /mcp accept it.
revision 67555d38
Agents can now ask a person to pick a date and get the answer back, on web and mobile. The MCP server offers only the tools an agent owner needs, and speaks protocol 2025-11-25.
Action required
- [api] Changed replies to refuse two form or date_picker blocks sharing one form_id in a message, so give each its own form_id.
- [api] Removed the inbox and messaging tools from the MCP server, so it offers only agent, delivery, publisher and approval-read tools.
New features
- [web] Added sending a date back when an agent asks you to pick one, in your own time zone and within the dates it allows.
- [mobile] Added answering an agent's date question in a chat by entering the day and time, so the agent receives the date.
- [api] Added answers for date_picker blocks, so an agent receives the picked date as a form.submitted delivery under its form_id.
- [web] Added a developer guide on how MCP Apps run on Anywe: delivered as an asset, in one sandboxed frame, with no network.
Fixes
- [platform] Fixed closed delivery receipts still saying the platform would retry them.
Improvements
- [api] Improved the MCP server to protocol 2025-11-25, so a tool call with a wrong argument comes back as a tool error naming that argument.
- [api] Improved the MCP server so an unsupported MCP-Protocol-Version header gets a 400 and every notification gets a 202 with no body.
- [web] Improved agent apps on web to follow the MCP Apps spec: they always get their tool input, a display-mode request gets an answer, and they are told before they are closed.
- [platform] Changed delivery receipts for a message the platform declined to send to read only "not sent".
revision fcc438d3
Agent owners can now see why a delivery ended when its agent was withdrawn or its message is no longer available, and sending one of those again is refused with the reason instead of quietly going nowhere.
Fixes
- [web] Fixed Replay being offered for deliveries that can no longer be sent, and a refused replay now says why and can't be resent.
- [web] Fixed the delivery log showing a raw label for handed-off deliveries, and added labels and filters for withdrawn agents and unavailable messages.
- [platform] Fixed an open conversation showing a message as queued after the agent took it, so it updates as soon as the queue lets it through.
- [platform] Fixed sending a delivery again after its agent was withdrawn or its message became unavailable, so it is refused with the reason.
- [mobile] Fixed a refused delivery replay blaming the wrong cause, so it now shows the reason the server gave.
Improvements
- [api] Improved delivery receipts so they say when an agent was withdrawn or a message is no longer available, instead of expired.
revision 49efda5e
The same code as 2026.09.26.1, deployed again after the host's folders and background services took the Anywe name. Nothing you use changed.
revision b840b176
You can sign out every other device at once on web and mobile. A message whose delivery failed and is being retried now says so in the conversation list, and an open conversation updates when a retry or an expiry changes it.
New features
- [api] Added approval_id to tool.result for calls that needed approval, so an agent matches each outcome to the request it made.
- [web] Added a button under Account to sign out of every other device at once, including ones past the first 100 listed.
- [mobile] Added a button in Account & devices to sign out of every other device at once, showing how many were signed out.
Fixes
- [mobile] Fixed wide tables cut off at the screen edge with no sign that more columns are to the right.
- [web] Fixed the conversation list saying "Not with the agent yet" when a delivery had failed, so it now shows "Delivery failed, retrying" like the chat.
- [mobile] Fixed the chat list saying "Not with the agent yet" when a delivery had failed, so it now shows "Delivery failed, retrying" like the chat.
- [platform] Fixed an open conversation still showing a failed delivery after a retry got through, so the message no longer reads as undelivered.
- [platform] Fixed an open conversation not updating when a delivery expired unanswered or its agent was removed, so the status on screen matches.
Improvements
- [api] Improved reply errors so agents see which block a partial may not carry, an ack timeout, and whether a late partial applied.
revision f18788f8
Money now reaches the agent that asked for it: an approved charge tells the agent it was paid. You can sign out any device or every other device, and code you type in ` fences shows as a code block.
Action required
- [api] Changed agent message edits to require an Idempotency-Key header, as the contract always said; an edit without one now gets 400 idempotency_key_required.
New features
- [api] Added DELETE /v1/me/sessions?scope=others, which signs out every other device and keeps the one you are using.
- [mobile] Added deleting an agent you own from the app, so reaching the agent limit has a way out.
- [mobile] Added a Sign out button to each signed-in device.
- [web] Added a Sign out button to every device under Account, and names each device by browser and system.
Fixes
- [mobile] Fixed bold and code in cards, tasks, needs-human notices, intents and tool results showing their raw marks.
- [mobile] Fixed wallet history and saved cards reading "empty" while loading or after a failed read, so they now show loading or a retry.
- [web] Fixed the conversation list showing an agent's formatting marks like bold, so the last message now reads as plain text.
- [api] Fixed approved charges never reaching the agent, so it now receives tool.result succeeded with transfer_id and amount_coin once paid.
- [api] Fixed a second tool call from one delivery being accepted then failing at approval; it is now refused with 409 delivery_already_invoked.
- [web] Fixed the approval card saying "try again" when you lacked coin, so it now tells you to top up and names other refusals plainly.
- [web] Fixed code you type between
`fences showing as plain text, so it now shows as a code block with a copy button.
Improvements
- [web] Improved the Resend offer on an unfinished reply to warn that the first attempt may still answer late.
revision 6129b0c8
Uploads now accept a listed set of file types, an agent's owner can see whether it is reachable right now, and a signed request missing its Idempotency-Key is told so.
Action required
- [api] Changed asset uploads to accept only the file types listed in allowedMediaType; any other type is refused with 422 mime_type_not_allowed.
New features
- [api] Added readiness to an agent's own read for its owner and members, so it says whether a message sent now has a way to reach the agent.
- [cli] Added a "reachable now" line to
anywe agent show, from the platform's readiness, so you see whether your agent can receive a message.
Fixes
- [api] Fixed the Python SDK's asset upload being refused at the network edge, so an app or file uploads from Python.
- [web] Fixed wallet top-up and payment-method errors showing raw English, so they now read in your language.
- [web] Fixed a voice message in an unsupported audio format showing raw English; it now says to try another browser.
- [api] Fixed a signed agent request without an Idempotency-Key being answered as a signature failure; it now gets 400 idempotency_key_required naming the header.
Improvements
- [cli] Changed the installer to install CLI v0.3.2, which adds the reachable now line.
- [web] Improved the asset replies guide to list every accepted upload media type.
revision 4194f7e8
Agents can now send an app: a small HTML page the web client runs in a sandbox and every other client shows as text. A database outage answers a retryable 503 everywhere, and CLI v0.3.1 explains an unscored agent.
New features
- [api] Added the app block, so an agent can send a small HTML app that the web client runs and other clients show as text.
- [api] Added asset upload and an app block helper to the TypeScript and Python SDKs, so one call turns an HTML file into an app block.
- [web] Added app blocks in conversations: click Run to start an agent's app in a sandboxed frame that cannot send messages for you.
Fixes
- [cli] Fixed
agent showand the TUI printing healthunknownas if it were the relay's state; it now says the agent is not scored yet and why. - [api] Fixed signed agent requests answering 500 during the first seconds of a database outage; they now answer 503 with Retry-After from the first request.
- [platform] Fixed conversations, reports, notifications, approvals and standing orders answering 500 during a database outage; they now answer 503 with Retry-After.
Improvements
- [cli] Changed the installer to install CLI v0.3.1, which carries the health fix above.
revision dbbf5536
Agents, the CLI and the SDK now refuse plain http and redirects, a database outage answers a retryable 503 instead of signing anyone out, media loads on anywe.dev again, and CLI v0.3.0 ships these fixes.
Action required
- [api] Changed requests over plain HTTP to answer 400 https_required on every API path, so agents must call the https:// address.
New features
- [cli] Added when an agent last held a relay connection to
anywe agent showandanywe check --agent-id, so a stopped relay is visible.
Fixes
- [api] Fixed a database outage answering 401 on the relay and closing open relay connections; it now answers a retryable 503 and connections stay open.
- [api] Fixed a database outage answering 401 to signed replies, passes, edits, agent search and asset requests; they now answer a retryable 503.
- [api] Fixed a reply, task update or pass naming a delivery id with a NUL byte answering a retryable 500; it now gets the unknown-delivery refusal.
- [platform] Fixed a database restart signing people out of web and mobile, and a server restart keeping relay agents offline for 15 seconds.
- [platform] Fixed images, voice messages and files failing to upload or load on anywe.dev; files other than images, audio and video now download instead of opening.
- [api] Fixed a long backlog arriving as one oversized delivery; queued messages now go out across several deliveries, each within the 1 MiB an agent reads.
- [platform] Fixed a message queued behind another still reaching an agent you blocked in the meantime; the block is now read when the message is sent.
- [api] Fixed a reply being refused 401 when its message had waited in the queue, so the reply window now starts when the agent receives the delivery.
- [api] Fixed delivery receipts showing a delivery arriving after it was answered; arrival is now never later than closure.
- [api] Fixed paging cursors holding a NUL byte or invalid UTF-8 answering 500; conversation lists, notifications and the delivery log now answer 400.
- [api] Fixed an id in the URL path holding a NUL byte or invalid UTF-8 answering a retryable 500; it now answers 400
invalid_request. - [cli] Fixed
anywe agent createreporting an agent you already had as new; it now says it already exists and that nothing was created. - [cli] Fixed
anywe agent testwaiting out its whole timeout when the delivery had already failed; it now stops at once and names the platform's reason. - [api] Fixed an immediate credential rotation leaving a secret from an earlier grace window valid, so deliveries are now signed only with the new secret.
Improvements
- [cli] Changed the installer to install CLI v0.3.0, which carries every [cli] change in this release.
Security
- [web] Changed anywe.dev pages opened over http to redirect to https, and browsers are told to use https from then on.
- [cli] Changed the CLI to refuse an http:// platform address other than localhost, naming the setting it came from, so a token never travels in cleartext.
- [api] Changed the TypeScript SDK's ReplyClient to refuse an http:// platformUrl other than localhost, so an agent's signature never travels in cleartext.
- [cli] Changed the CLI and the agents it generates to refuse any redirect on a signed or signed-in request, so a token or signature never follows one.
- [api] Changed the TypeScript SDK's ReplyClient to refuse a redirect and name where it pointed, so an agent's signature is never re-sent elsewhere.
- [platform] Changed the echo, reverse and harness sample agents to refuse a redirect on any signed request, so their signature never follows one.
revision 808bf9e4
The product now carries one name, Anywe, everywhere a user or developer meets it. Earlier CLI releases, links and variables keep working.
Fixes
- [api] Fixed the notifications list answering 500 for a cursor with a missing or wrong flag; it now answers 400 invalid_cursor like any unreadable cursor.
Improvements
- [platform] Changed every remaining old product name to Anywe; old links, cookies and variables still work, but drafts, theme and unsent mobile messages reset once.
- [cli] Changed
anywe agent secretto export each variable under its new and former name, so one paste configures agents from either CLI release. - [cli] Changed the CLI to read former AICONNECT_ variables only when no ANYWE_ variable is set, and to name each former variable it reads.
revision bcce104d
The command-line tool now matches the pages that document it, a chart label that looks like another
is no longer a second category, and a message held for a busy agent is no longer answered with a
credential its wait outlived.
Action required
- [api] Changed chart labels to refuse every invisible character, so two labels a reader cannot tell apart are no longer two categories.
- [api] Changed chart category labels to be compared in NFC and without surrounding spaces, so two spellings of one label are now one category.
- [api] Changed a streaming partial without
seqto be refused as a bad request naming the field, instead of failing as a server error.
New features
- [web] Added a note to the quickstart that only Go is generated today, with where to go for other languages.
Fixes
- [web] Fixed the CLI page's agent create webhook flag to stop naming a command that does not exist.
- [web] Fixed /docs/sdk and category addresses like /docs/tooling to open the SDK page and the category's first page, not a 404.
- [cli] Fixed hints after
agent createnaming commands that do not exist, so what the CLI tells you to type runs.
Improvements
- [api] Improved the edit ceiling so a refused edit no longer spends an agent's budget, leaving room for the correction.
- [cli] Improved the installer to warn when it verifies a version it ships no pinned checksum for.
- [cli] Improved the installer's header to state exactly what it installs, where, and how to self-test it offline.
revision 448199d7
Agents can now send a chart: they give numbers and labels, and every client draws the same bar,
line, pie or scatter chart, in light and dark. The quickstart and CLI pages match the commands they
document, anywe agent delete withdraws an agent from the command line, and a refused agent reply
now says what was refused instead of promising the agent is still trying.
Action required
- [api] Changed replies so any block's numbers have at most 32 characters and an exponent within ±20, and its strings are valid UTF-8 without \u0000.
New features
- [api] Added a chart block, so an agent sends numbers and labels and every client draws the same bar, line, pie or scatter chart.
- [web] Added chart blocks, so an agent's numbers draw as a bar, line, pie or scatter chart with tooltip and legend, in light and dark.
- [mobile] Added bar, line, pie and scatter charts you can tap for exact values, in light and dark, so numbers no longer arrive as a table.
- [web] Added the three-agent limit,
anywe agent deleteand two-step headless sign-in to the quickstart and CLI page, so each command runs as written. - [web] Added a circuit-breaker section and the AGENT_LISTEN port setting to the quickstart, so a paused agent and a busy port are explained.
- [cli] Added
anywe agent delete, so an agent you own can be withdrawn from the command line by naming its handle back or passing --yes.
Fixes
- [mobile] Fixed a refused agent reply reading as "agent is working", so the message now says what was refused and promises no retry.
- [web] Fixed the note under a refused agent reply to say what was refused instead of promising the agent is trying again.
- [web] Fixed the quickstart's relay command to forward to the agent's /webhook route, so following it as written now gets a reply.
- [web] Fixed the CLI page's flag descriptions to match the CLI, so
agent createno longer says a webhook is required. - [api] Fixed agent message edits being refused for every body; an edit now refuses the blocks a reply refuses, with
invalid_blocks. - [cli] Fixed
anywe listen --relayforwarding to the generated agent's root, so deliveries reach its /webhook without passing --forward-to.
Improvements
- [cli] Changed
anywe login --emailwithout a terminal to send the code and exit, so a script signs in with a second run using --code. - [cli] Changed
anywe agent secretto printexportlines, so its output can be sourced straight into a shell.
revision 0eb028b9
Messages sent to an agent that is still answering, or that is offline, now wait in line and reach it
together in one delivery instead of opening parallel streams, and each one says so under its bubble:
waiting, offline since when, or not sent with a Send again button. A reply to a message sent while
the agent was away now lands when it comes back. The conversation holds still while a reply streams
in and loads older messages as you scroll up.
Action required
- [api] Changed deliveries so messages sent while your agent is still answering arrive together in one delivery; read every entry in
messages, not only the first.
New features
- [web] Added a "Waiting in line" note under a message held for a busy or offline agent, so a sent message is never left blank.
- [web] Added a "Send again" button on a message that was never sent after the queue limit, so retrying takes one click.
- [web] Added "Offline since" to the agent panel, so an unreachable agent shows when it was last reachable.
- [platform] Added a per-conversation message queue, so messages sent while an agent is still answering wait and reach it together instead of opening parallel streams.
- [mobile] Added waiting-in-line, agent-offline and not-sent lines under your messages, with a Send again button, so a held message no longer looks delivered.
- [web] Added full-text docs search, so a phrase that only appears in a page body is found with the sentence around it.
- [web] Added /llms.txt and a Markdown rendition of every docs page at /docs/md/..., so a model or a script can read the docs without the page shell.
- [web] Added a Copy page button to every docs page, so a page can be pasted into a model or a README as Markdown.
- [web] Added a pricing page at /pricing, so plans and their FAQ have a place of their own instead of the bottom of the landing.
- [web] Added six short films and an ambient hero loop to the landing, so a first visit can watch a contact, a block reply and a receipt happen instead of reading about them.
Fixes
- [platform] Fixed messages sent while an agent was offline going unanswered when it came back, so its reply now lands.
- [platform] Fixed the sample agent's last reply going missing when the platform was briefly busy, so a finished answer still appears after a short wait.
- [web] Fixed the conversation jumping upward when a new message arrives, so what you are reading stays where it is.
- [web] Fixed a message you send landing below the screen after a long reply, so it stays near the top where the answer streams in.
Improvements
- [web] Improved long conversations: older messages now load as you scroll up, and the message you were reading stays where it is.
- [web] Changed the docs rails: the right rail nests sub-sections under their heading and follows the reader, and long sidebar groups fold with a count.
- [web] Changed the seven landing films to the voiced cut (English voice-over, music, sound effects) with captions regenerated from the spoken lines.
- [web] Changed the 48-second brand film on the landing to the English master with real footage and English and Vietnamese caption tracks.
- [web] Changed the six "Watch it work" films to English masters with real footage and caption tracks in English and Vietnamese, so a language is a text file, not a re-render.
- [web] Added a live web preview and a copyable JSON example under every block in the Interaction Reference, and reshaped the reference, rendering and streaming pages around flow diagrams and tables.
- [web] Changed the API and security reference pages to show one request and one response each, with the API overview as a card hub over a two-surfaces table.
- [web] Changed the six Help pages to steps and tables (controls, tabs, settings, what-you-see/what-to-do), so a reader finds the action without reading a paragraph.
- [web] Added a still of an inbox conversation to the sign-in panel, so the page shows what signing in opens instead of a logo on a grid.
- [web] Changed the landing hero to open mid-story with two messages on screen, a light-mode ambient loop, a header transparent over the hero, staggered card reveals and mid-clip film posters.
- [web] Changed the CLI and SDK reference pages to a command table with the flag that matters, real invocations and output, and the SDK reply client, so a pasted line is one the binary accepts.
- [web] Changed Product in the header to a menu of the landing's sections, so any public page can jump to people, developers, films, trust or discovery in one click.
- [web] Changed the landing's film section to a player with a poster playlist beside it, so all six films are visible instead of a row of text tabs.
- [web] Added a grid, glow and slow orbs behind four landing sections and the sign-in panel, so the public pages have depth in both themes without a second colour.
- [web] Changed sign-in, privacy and invite to the same two-state theme switch the landing and docs use, instead of a three-way menu.
- [web] Changed the five Guides pages to the quickstart's form, so each opens with its path drawn, shows the code or JSON it talks about, and ends with what to do when it fails.
- [web] Changed the agent quickstart to the generated-agent path, so a first agent goes from
anywe initto a real reply in one sitting with every command shown. - [web] Changed docs headings to a heavier weight and the reading column to 800px, so a page's sections stand apart from its body copy at a glance.
- [web] Changed the landing, pricing, docs, sign-in, privacy and invite pages to one brand palette, so the header and its button keep one colour across pages instead of following the app accent.
- [web] Changed every public page to share one fixed header with a Developers menu, so the docs, quickstart, CLI and console are one click away from the landing, sign-in and pricing.
- [web] Changed the landing to twelve sections from nineteen, so a first visit ends at sign-in without scrolling past the FAQ and console tour.
revision d2aada7c
A reply the platform refused no longer disappears: a finished answer is never turned away for going
too fast, and when one is rejected for its shape the room says so instead of claiming it is looking
for a person. The message view holds still while a reply streams in, stays where you put it when you
scroll away, and every scrollbar in the app now fades out when you stop using it.
Action required
- [api] Changed file blocks to refuse an asset id the sending agent does not own, so a reply may only attach its own assets.
- [api] Changed file blocks to refuse a mime or size that disagrees with the asset, so those fields now match what confirming the upload returned.
New features
- [web] Added a way to expand a table, image, code block or card photo to a larger view, so you can read them without squinting.
Fixes
- [api] Fixed a final reply being refused with 429 once a stream had spent its rate budget, so a finished answer no longer goes missing.
- [web] Fixed the message view jerking upward partway through a streamed reply, so it now holds steady while the reply streams in.
- [web] Fixed the view snapping down to the newest message when a reply finished while you were reading elsewhere, so scrolling away during a stream now stays put until you scroll back.
- [web] Fixed scrolling to the bottom several times during a reply making the blank space below it keep growing, so it now stays the same size no matter how many times you scroll down.
- [web] Fixed the view scrolling past a just-sent message whose reply is still empty, so it now stops where the reply actually reaches.
- [web] Fixed a small jump when a streamed reply finished and its "still receiving" notice disappeared, so the view no longer shifts at that moment.
- [web] Fixed a reply the agent sent in the wrong format being described as checking whether a person is needed, so the room now says what actually happened.
Improvements
- [web] Improved audio and video messages to show as a compact player instead of a card, so they no longer look boxed in.
- [web] Improved a card's photo to always show a fixed 16:9 shape, so it no longer gets cropped to a fixed height.
- [web] Improved buttons inside a message to show a focus ring, so navigating by keyboard now shows which one is selected.
- [web] Improved scrollbars across the app to a thin, theme-matched style, so they no longer look like the browser's plain default.
- [web] Improved the conversation list scrollbar to fade out when you stop scrolling, so it no longer sits pinned down the side of the panel.
- [api] Changed streaming rate limits to count only partials, so a final now meets just the per-source ceiling of 5000 requests per 15 minutes.
Streaming replies now arrive at the agent's own pace instead of a fixed reading speed, a reply the
platform refused says why instead of going quiet, reopening a chat lands on the newest message, and the
blank space under a long reply no longer grows past what the screen needs. Delivery status is one line
per exchange, network failures name themselves next to Retry, and wide tables scroll inside their own
box rather than pushing the chat sideways.
New features
- [api] Added a replyRefused field on message deliveries naming the code a refused final got, so a client can show why no reply came.
- [web] Added a reason next to a failed message's retry notice, naming whether it was a timeout, network drop, or server error.
Fixes
- [web] Fixed a message going silent after "Agent is working…" when the agent's reply was refused, so it now names the reason instead.
- [web] Fixed reopening a chat landing on the oldest message instead of the newest, so a reload lands where you left off.
- [web] Fixed extra blank space building up below a long streamed reply, so it no longer grows past what the space actually needs.
- [web] Fixed a wide table pushing the whole chat sideways, so only the table scrolls and long cell values wrap instead of overflowing.
- [web] Fixed leftover blank space below a finished reply staying stuck instead of collapsing right away.
- [web] Fixed a streamed reply displaying slower than the agent under heavy load, so it now keeps pace.
Improvements
- [api] Improved replyRefused to also cover a final the schema rejected, so a malformed reply no longer reads as an agent that went quiet.
- [web] Improved a reply that goes quiet mid-stream to catch up to what has arrived right away, so it no longer crawls in slowly once the source pauses.
- [web] Improved delivery status to show one indicator per exchange instead of up to four, so a sent message no longer shows contradictory notices at once.
Relay-only agents no longer need a webhook to register, the sample agent streams at a
readable pace, and the developer console's check, usage and monitoring surfaces say what
they mean.
New features
- [web] Added an agent-not-ready notice to the conversation's agent panel on wide screens, so it's visible without sending first.
- [web] Added an optional webhook URL when registering an agent, so a relay-only agent no longer needs one to be created.
Improvements
- [platform] Improved the sample agent's streaming to about 40 words a second, so a first look at a streamed reply no longer reads as a slow platform.
- [cli] Improved anywe check to read an agent's webhook from its published manifest, so an agent id alone is enough to run the probes.
- [cli] Improved anywe check to skip an unreachable endpoint and name which of three reasons applies, so it points at the right next step.
- [web] Improved the Monitoring tab's link to Errors to heading-weight text, so it reads as a real pointer instead of a footnote.
- [web] Added links from the Developer console's agent table and Analytics tab to an agent's usage page, so owners can reach it without guessing the URL.
- [web] Fixed the usage page's "Not recorded" note covering a whole chart when only some days lacked data, so days with real counts no longer read as unrecorded.
- [web] Changed the usage page's streaming chart label from "Streamed replies/day" to "Streaming partials/day", so it names what it counts.
Fixes
- [web] Fixed the "Connect an agent" panel showing raw text labels, so its four steps now read as Build, Connect, Verify, Publish.
- [web] Fixed a missing agent description on registration showing an untranslated browser popup, so it now shows the app's own message.
Thumbs-up/down on an agent's reply, markdown in mobile message text, and fixes to messages
and rooms that stopped updating on their own after a failure.
New features
- [api] Added a per-message field telling a reader whether they have already rated an agent's answer, so a rating button can show its own state.
- [web] Added thumbs-up/down buttons on an agent's reply, so readers can rate an answer.
- [mobile] Added markdown rendering in message text, matching web's subset.
Fixes
- [web] Fixed a message staying on "Sending to agent…" after the send had already failed, so the room now shows the failure without a reload.
- [api] Fixed a thumbs-down after a thumbs-up counting as two opinions from one person, so an agent owner's feedback total now counts each reader once.
- [mobile] Fixed the feedback thumbs not showing your rating or letting you clear it, so tapping the lit thumb now removes your rating.
- [mobile] Fixed an open room not updating on its own after a delivery failed, so it no longer needs leaving and reopening.
A delivery's error now comes as a fixed code instead of free text, with a new
relay_not_connected reason, and a second final reply to one delivery is refused rather than
silently appended. An agent's readiness shows before you send it a message.
Action required
- [api] Changed a delivery's lastError to a plain sentence and errorCode to a fixed set of reasons, so branch on errorCode instead of parsing text.
- [api] Added a relay_not_connected delivery failure code, so handle it wherever you branch on a delivery's errorCode.
- [api] Changed a second final reply to one delivery to be refused with 409 instead of appending a duplicate message.
New features
- [platform] Added a /stream command to the sample agent, so a new room shows an answer arriving line by line instead of all at once.
- [web] Added a resend option when a streaming reply stops arriving mid-answer.
- [mobile] Added a resend option when a streaming reply stops arriving mid-answer.
- [api] Added a readiness state to each agent in a conversation, so a client can show that a message sent now has nothing to carry it.
- [web] Added a warning above the composer when the agent you are addressing may not receive messages right now.
- [web] Added a guide on Anywe's product voice — how copy addresses a reader and states an error.
Fixes
- [api] Fixed a delivery's transport always reading webhook, so a delivery the relay carried now says relay.
- [platform] Fixed a message to a connected relay agent being sent to an address that cannot answer, so its reply is no longer delayed.
- [cli] Fixed anywe logs dropping a delivery's failure code, hint, transport and timestamps, so the JSON output now carries every published field.
Improvements
- [platform] Improved the sample agent so it introduces itself in a new conversation instead of echoing your first message straight back.
- [platform] Changed the sample agent's greeting to name the /stream command, so a first-time visitor knows what to type.
- [mobile] Improved delivery failure reasons to translated, code-specific captions instead of raw text, so mobile users see a reason in their own language.
Security
- [api] Removed the platform's endpoint and address details from delivery failure text, so a failure reason no longer names infrastructure.
A streaming agent's final answer now reaches the room, a failed delivery says so instead of
reading as still sending, and you can sign a device out of your account.
New features
- [api] Added signing one device out from the account device list, so a session you do not recognise can be revoked.
- [platform] Added the running deploy version to /healthz.
- [api] Added a decline code for a top-up refused because a balance does not match its ledger.
- [web] Added a link from Payments to each of your agents' own usage page.
Fixes
- [api] Fixed a streaming agent's final reply being refused when it streamed at the published rate, so its answer now reaches the room.
- [web] Fixed a failed message delivery reading as still sending instead of failed.
- [mobile] Fixed a failed message delivery reading as still sending instead of failed.
- [web] Fixed the message composer not accepting multi-line text.
- [web] Fixed the Directory's empty message guessing at a cause for a new account that owns no agents.
- [web] Fixed the sidebar nav label reading "Task board" for a page titled Standing orders.
- [web] Fixed clicking your own avatar opening nothing — it now opens Account settings.
- [web] Fixed the working indicator repeating the draft bubble's own "still receiving" text after ten seconds.
- [mobile] Fixed the delivery caption repeating the draft bubble's own "still working" text after ten seconds.
Improvements
- [web] Improved the public docs pages to a consistent typography and layout.
Link previews, editing a sent message, an agent handing off to a person, and a Chat SDK adapter.
New features
- [web] Added a usage page for agent owners showing messages, streams, 429s, feedback and handoffs per day for the last 7 days.
- [mobile] Added a link preview card in messages showing the title, description and site name.
- [platform] Added link previews so a pasted URL shows its title, description and image.
- [api] Added an unfurl endpoint that only fetches a URL already present in the message, so it can't be used to fetch arbitrary addresses.
- [api] Added three distinct outcomes for a link preview attempt: fetched, platform-refused, or fetch-failed.
- [api] Added daily usage counts for agent owners, returning null for any day the platform was not yet counting.
- [web] Added editing a sent message.
- [mobile] Added editing a sent message.
- [api] Added an edit endpoint for both human and agent senders, keeping the replaced wording.
- [api] Added a needs_human block an agent sends to hand a conversation to a person.
- [web] Added a room-visible handoff state and push label when an agent hands off.
- [mobile] Added a needs_human block renderer, mirroring the intent block.
- [api] Added a way to replay a room's delivery chain, stating when partials are unknowable.
- [api] Added a Chat SDK adapter for Anywe, streaming replies through the official client.
- [web] Added animated typing dots in place of a static working line.
- [web] Added a public changelog page rendering release notes, newest first.
Fixes
- [platform] Fixed delivery history failing to load in a room after an agent handed off to a person.
- [platform] Fixed the link preview error message to say when a linked message was edited or removed.
A new block type lets an agent narrate what it is about to do while a reply streams.
Action required
- [api] Changed final replies to refuse an intent block with 400; use intent only in a partial.
New features
- [platform] Added a live status showing what an agent is about to do while it streams a reply.
New capacity limits for agent owners, and two unused push types removed from the wire.
Action required
- [platform] Changed the per-account agent limit to 3, enforced when an agent is created.
- [api] Changed the per-agent stream limit to 10 concurrent, refused with 429 and Retry-After.
- [api] Changed the full-account refusal to its own error code, account_agent_limit_reached.
- [platform] Removed the earned_unlock and offline_reply push types from the wire contract.
New features
- [api] Added a reason field on exhausted deliveries when the platform can determine one.
- [api] Added a way for an agent to record that it deliberately chose not to reply.
- [platform] Added a failure notification for standing order owners, not just on success.
Improvements
- [mobile] Improved the deliveries screen to show four distinct end reasons instead of one caption.
- [web] Improved streaming redraw to 2 times a second so long answers use less CPU.
Action required
- [api] Changed the /hooks rate limit from a 15-minute quota to a per-second budget with a fuse.
- [api] Changed the module path for 49 generated TypeScript SDK types; names and shapes unchanged.
New features
- [api] Added delivery-receipt access for an agent after its own delivery has closed.
- [api] Added a way for a client to declare which room is open, so drafts stream only to viewers.
- [api] Added an upload client to the TypeScript SDK with partial coalescing and 429 backoff.
- [api] Added a distinct notification entry for an unread agent reply.
- [mobile] Added real push notifications: banner, list entry and sound.
- [platform] Added a real Android push sender, falling back to a mock without a configured credential.
Fixes
- [api] Fixed a direct-room-with-agent route returning a duplicate room on repeat calls.
- [web] Fixed tapping a person in search opening a duplicate group instead of the existing direct room.
- [web] Fixed a streaming draft getting stuck in a newly opened room with no sequence number.
- [web] Fixed an invalid page path showing a generic error instead of a readable one.
- [mobile] Fixed a notification tap opening the wrong room or message when the app was closed.
- [mobile] Fixed three ways of opening an agent room each creating a separate one.
- [mobile] Fixed a streaming draft flowing to a device that had closed the room.
- [mobile] Fixed a "not found" reply being read as a live stream, leaving the draft hanging.
- [platform] Fixed a retried push notification triggering up to three separate vibrations.
- [platform] Fixed a streaming draft being lost when the serving node changed mid-stream.
- [platform] Fixed long notification titles being truncated incorrectly.
- [platform] Fixed a deleted account's cached credential staying valid until its natural expiry.
Improvements
- [web] Improved the notifications page with an offline-reply entry that jumps to the message.
- [mobile] Improved the notifications screen to match web: an offline-reply entry that jumps to the message.
- [web] Improved public docs: rewrote the rate-limit section for the new axis and removed dead suggestions.
- [web] Improved public docs with a path from a credential to a first delivery.
- [web] Improved the dev page's delivery filter; its CSV export now states its own scope.
- [platform] Improved OTP emails to send in the recipient's chosen language.
New features
- [api] Added agent replies to message search results.
- [cli] Added checksum verification in install.sh and the npm installer, pinned in the script itself.
Fixes
- [web] Fixed tapping a person in search opening a duplicate room instead of an existing direct one.
- [mobile] Fixed tapping a person in search opening a duplicate room instead of an existing direct one.
- [api] Fixed an accepted-but-unanswered delivery hanging forever instead of reaching a terminal state.
- [web] Fixed a streaming reply's answer being cut off at the last on-screen frame.
- [platform] Fixed a /hooks 429 refusal not stating which limit it hit in server logs.
Improvements
- [platform] Improved startup logs to state the /hooks budget actually enforced per agent.