Changelog
All notable changes to TokenFlux are documented here.
Changelog
All notable changes to TokenFlux are documented here.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[1.10.0] - 2026-10-11
This release adds account-wide app connections, custom remote MCP servers and interactive views in agent conversations.
โจ Added
- Apps: Connect services through their own remote MCP servers with OAuth sign-in or API keys. The Apps page provides search, category filters and a page for each service. Every agent of the account can use its connections; group chats have no app tools. Tokens are encrypted in Agent state (#312, #318, #321).
- Connect an app during a conversation: In the web app, an agent can show a connection card. In a private chat, it can send a connection link. After the user connects the app, the agent continues the task in the same session and sends the result back to that chat (#313, #314).
- Find apps by task: The
app_discovertool finds catalog apps by name or task and returns up to 20 matches. The agent can list connections, search their tools and call them through codemode (#320). - Custom remote MCP servers: Add a server by its HTTPS URL, or find and add a supported remote server from the official MCP Registry. Each account can add up to 20 custom servers. Servers can use an API key, supported OAuth sign-in or no credentials, as their protocol permits. Registry entries can supply named key fields and headers. Custom key connections are marked unverified because the server may accept any key (#322, #323).
- Interactive conversation views: Agents can use
ask_userfor forms and choices, andshow_uifor tables, statistics, charts, progress, cards or isolated HTML views. The web app keeps up to 50 views per session. Chat channels receive a text version (#315, #316). - Codemode: Agents can batch, chain and filter tool calls in a script.
Only the script output enters the model context. File and shell tools,
ask_userandshow_uiremain available directly (#309, #316).
๐ Changed
- Multiple accounts of one app: Connection IDs name the app. Connection names must be unique within that app, ignoring case. When several connections could serve a request, the agent asks the user which to use (#319).
- API key formats: Apps can request a Bearer token, a custom header, Basic credentials or several key fields. The connection form masks each field (#321).
- Portal components: The Portal now uses Base UI components. Dialog, sheet and pagination controls keep their translated labels (#317).
๐๏ธ Removed
- OpenConnector: Apps now connect directly to vendor-hosted MCP servers. The OpenConnector integration and its deployment files are removed (#312).
Full Changelog: v1.9.1...v1.10.0
[1.9.1] - 2026-10-09
This release changes only the production deployment.
๐ Changed
- Old images are removed after a deployment: After verification passes, the deployment removes the other tags of the image repositories that the release uses. It keeps the release's sandbox image, and Docker keeps any image that a container still uses. Production had kept every image since v0.5 and filled its disk (#307).
- Release pointer in the release commit: The release commit sets
deploy/prod/tokenflux/release.envtogether with the changelog. TheDeploy Productionworkflow deploys that version and no longer asks for it; it still requiresmainand thedeploy-productionconfirmation (#308).
๐๏ธ Removed
deploy:set-version: The deployment already refuses unpublished images before it changes the host (#308).
Full Changelog: v1.9.0...v1.9.1
[1.9.0] - 2026-10-09
This release opens group agents to every member, lets agents read and follow chat topics, runs agent sessions in the worker, moves the Rivet Engine into its own container and replaces the Ansible deployment with plain Compose files.
Agent sessions start fresh: after the upgrade, existing conversations no longer appear in the web app or in linked chats. Workspace files, Agent Soul, memories and automations stay. This cannot be undone.
โจ Added
- Group agent for every member: In a Telegram group, Slack channel or
Feishu group, the person who paired the whole group can send
/members onin the group itself, not in a topic, to let every member use the agent, and/members offto return it to the pairer only. Pairing the group again also returns it to the pairer only. Each request in an open group names the member who asked. An open group gives every member full control of the agent, including its workspace, API key, automations and memory, so use it only on a TokenFlux account set up for the team (#252). - Agent reads the current topic: In Slack and Feishu, the agent can read
the latest 1-50 messages of the chat or topic a request came from, for
example to summarize a discussion. It reads only that chat, only when it
decides to, and treats the messages as material, not instructions. Feishu
needs the
im:message.group_msgpermission, which a tenant admin must approve; apps created by scanning now request it, and older apps must add it in the Feishu developer console (#253). - Followed topics: In Slack and Feishu, a topic opened by mentioning the
bot follows: later messages in it run without a mention, for whoever may use
the agent there, and each one is billed to the owner. A mention inside
someone else's topic answers once. Send
/follow offin a topic to stop, and@bot /follow onto start again. In Feishu this needs the sameim:message.group_msgpermission. Feishu apps created on v1.7.0 through v1.8.0 do not have it: add it in the Feishu developer console and wait for tenant admin approval. Until then, topics do not follow: a topic opened by a mention names the missing permission once, and@bot /follow onreplies with it instead of turning follow on. After approval, stop and start the connection in the web app so it checks again (#253). - Conversation details tool: The new
session_getagent tool returns the current conversation's title, times, agent, model and thinking level, memory state and what started the run. It reads only the current conversation (#299). - Background jobs survive sleep: A process that a bash call leaves running
(
cmd &) now keeps its session's sandbox for up to 60 minutes after the last reply, set byAGENT_BACKGROUND_JOBS_MS. Cancel and delete still remove the sandbox at once (#300).
๐ Changed
- Feishu group conversations: Each mention of the bot in a Feishu group now starts its own conversation, and the reply opens a topic under the mention. A pairing code sent inside a topic pairs the whole group. Topics that existed before this release start a new conversation (#252).
- Slack replies under a bot message: A reply in a thread under a message the bot posted, such as an automation result, now needs a mention (#253).
- Agent sessions start fresh: Agent sessions now run their loop in the worker, and only file and shell commands run in the session container. After this release, existing conversations no longer appear in the web app or in linked chats, and the next chat message starts a new conversation. The workspace files, Agent Soul, memories and automations stay. The change cannot be undone (#293).
- Standalone Rivet Engine: Production runs the Rivet Engine as its own
loopback-only
rivet-enginecontainer on the existing agent state volume, and the agent worker connects to it. The deployment generates/opt/tokenflux/rivet.envwith the Engine admin token once, with mode0600. Production still runs one agent process (#303). - Deployment without Ansible:
deploy/prodnow holds plain Compose files, the Caddy site and two host scripts.deploy/prod/tokenflux/release.envis the release pointer anddeploy/prod/new-api/compose.ymlpins New API. Every deployment drains the agent before New API restarts; a drain that does not exit 0 restarts the old agent and stops the deployment. Image pulls and the Caddy check run before any host file changes (#306).
๐ Fixed
- Sub-session slots and session start: A rejected
session_spawncall no longer uses a sub-session slot, and a new session no longer waits about 2.4 seconds before it starts (#298).
๐๏ธ Removed
- pi extensions, skills and
/reload: Extensions and skills that you installed in an agent's pi directory no longer load. Slash-command discovery and the commands menu in the web app are gone, and so are/reloadin the web app and in chats and the Telegramreloadcommand./clearand/compactstay. The container-sidememory_searchandmemory_readtools are replaced bymemory_getandmemory_searchon stored memories (#293). - Ansible: The Ansible inventory, roles and playbooks and the
ansible-coretool pin are removed (#306).
Full Changelog: v1.8.0...v1.9.0
[1.8.0] - 2026-10-07
This release removes retired deployment templates and completed agent storage migrations, and moves New API to v1.0.0-rc.41.
New API v1.0.0-rc.41 migrates its database schema. After you deploy this release, do not roll New API back to v1.0.0-rc.40 or earlier. An agent worker older than v1.7.0 must first be upgraded to a v1.7.x release.
๐ Changed
- New API v1.0.0-rc.41: Production now pins
calciumion/new-api:v1.0.0-rc.41. TokenFlux does not use the new dashboard Access Tokens or the admin user-management verification in this version, and its sign-in, keys, pricing, usage and relay behavior do not change. A legacy dashboard Access Token that an operator created outside TokenFlux works for 30 days after the upgrade, then New API rejects it (#286). - One New API version pin:
new_api.imageindeploy/prod/inventory/host_vars/tokenflux-prod/vars.ymlis now the only place that sets the New API version. Offline deployment validation checks that same image. To upgrade New API, change this value after the Portal boundary tests pass (#290). - Agent worker runtime: The agent worker runs Rivet 2.3.25 (including its bundled Engine), grammY 1.46.0 and MCP SDK 1.32.1 (#292).
- Agent worker shutdown log: The
{"drain":"worker"}log line now includespollsandregistryfields, so a drain that reaches its deadline shows which stage did not finish. A known Rivet Engine race remains: if the worker stops while the Engine starts a session, the drain can wait 4 seconds and the worker exits with code 1. Session state is durable, and the Engine moves the session to the next worker (#281).
๐๏ธ Removed
- Agent storage migrations: The completed v1.5 transcript migration and
v1.7 channel migration are removed, with the
AGENT_STORAGE_MODEmigration mode and the Telegram-era actors they read. Production deployment now refuses to upgrade an agent worker older than v1.7.0; deploy a v1.7.x release first (#266). - Kubernetes deployment templates: The portable Kubernetes and local
Kubernetes templates and their
deploy:kubernetes:*tasks are removed. They deployed only the stateless edge, without the agent worker. Use Docker Compose for a single host. The templates are recoverable from Git history at commitb6d23e48(#268). - Agent OpenAPI document: The generated
api/spec/httpapi.generated.jsonand its generation and drift checks are removed. A plain route table replaces Effect HttpApi in the agent worker; existing Agent API URLs and responses keep working. The Feishu, Slack and QR login routes now also accept the historical URL aliases of the other routes. A QR login request for a channel other than WeChat or Feishu now returns the usual sign-in or not-found error instead of a 400 decode error (#273, #274).
Full Changelog: v1.7.3...v1.8.0
[1.7.3] - 2026-10-06
๐ Changed
- Agent sandbox: Sandboxes run pi 1.0.4 on Debian 13 (trixie). The default extensions are pi-vcc 0.9.0, which supports pi 1.0 compaction, and pi-web-access 0.37.0. Existing agents get the new extension versions when their next container starts. Sandboxes stay on Node 22, because Node 24 uses about 40 MB more memory for each session (#262).
- Perplexity web search: Results come from the Perplexity Search API. Each result has a page snippet, and results no longer include an answer written by Sonar (#262).
Full Changelog: v1.7.2...v1.7.3
[1.7.2] - 2026-10-06
This release changes when agents use memory. Group chats no longer use memory, and memory review moves from each reply to a daily background run.
โจ Added
- Pinned memories: Ask the agent to pin a short fact that every conversation needs. Memory-on runs load pinned memories after Agent Soul. All pinned memories together are limited to 2,000 characters (#261).
- Daily memory review: Once a day, a hidden background session reviews finished memory-on conversations. It saves new facts, merges duplicates and archives outdated memories. It does not change pinned memories. An idle agent makes no model call (#261).
- Memory history and restore:
memory_historyshows each change that the daily review made.memory_restorerestores an earlier value or an archived memory. The newest 1,000 versions are kept (#261).
๐ Changed
- Faster replies: User runs no longer review earlier messages before they
reply. The
memory_reviewtool is available only to the daily review (#261). - Memory is off in group chats: A conversation that a group chat starts or messages cannot use memory. Its sub-sessions and automations that report to a group cannot use memory either. Memory-on conversations do not search the history of memory-off conversations (#261).
- Existing conversations: Conversations created before this release and imported conversations keep memory on, unless their last run came from a group chat or an automation that reports to a group (#261).
Full Changelog: v1.7.1...v1.7.2
[1.7.1] - 2026-10-06
๐ Fixed
- Agent worker image: Include the shared keyword matcher required by the memory store. The v1.7.0 worker failed before startup with a missing module error. Upgrades from v1.6.x should use v1.7.1 (#259).
๐ง Tooling
- Worker image check: CI loads the server's runtime modules inside the built worker image on pull requests and main. It records the result (#259).
Full Changelog: v1.7.0...v1.7.1
[1.7.0] - 2026-10-06
This release changes Agent configuration and memory tool contracts. Before upgrading, run the channel migration, provide any previous Agent settings Soul text to the agent again, and update memory writers to use revisions.
โจ Added
-
WeChat, Feishu and Slack channels: An agent's Channels page connects a WeChat account by QR scan, a Feishu app by QR scan or App ID and App Secret, and a Slack Socket Mode app with two tokens. Each platform links chats with a one-time code and supports the same chat commands as Telegram (#246, #247, #248, #250).
-
Native streamed replies: Chat replies stream through each platform's own API (#251).
-
Agent memory tools: Agents search saved facts and session history on demand, read complete values and source messages, and review completed conversation ranges during normal runs. Memories are shared across an agent's sessions. Each session tracks its own review progress. Review commits apply memory changes and progress in one transaction (#258).
๐ Changed
-
Channel core: Telegram now runs as one adapter of a shared channel core. Automations, sub-session results and
notifyreach linked chats on every platform. Operators run the channel migration before the upgrade (#245). -
Agent Soul: Only the agent changes its Soul, by editing a private draft with its edit and write tools. Agent settings no longer has a Soul editor, and the agent API no longer accepts or returns
systemPrompt. Soul is stored as numbered versions on the agent's volume. A Soul saved in Agent settings is not moved and no longer loads; provide the text to the agent to save it again (#258). -
Memory write contracts:
memory_rememberrequiresexpectedRevision. A null revision creates an absent key; replacing a value requires its current revision.memory_forgetalso requires the current revision. Read the complete value withmemory_readbefore changing it (#258). -
Web app name: Public pages, documents and the interface call the signed-in site the web app (็ฝ้กต็ in Chinese). Earlier entries in this changelog call it the Portal.
๐ Documentation
- Agent and web app guides: New pages describe agents, sessions, channels (Telegram, WeChat, Feishu and Slack), automations, agent tools and memory, the web app, and an API overview with base URLs, streaming and errors. The introduction and quickstart now start from both agents and the API.
- Chinese docs: The docs follow the reader's language. All pages except this changelog and the legal pages are available in Chinese.
- Privacy Policy: The policy now describes agents, the agent data that TokenFlux stores, and the chat platforms that you connect.
Full Changelog: v1.6.2...v1.7.0
[1.6.2] - 2026-10-04
v1.6.2 is a maintenance release built from v1.6.1. It does not contain the
channel changes on main.
๐ง Tooling
- GitHub releases from the release workflow: After the images publish, the workflow creates the tag's GitHub release from its changelog section. A tag without a section fails the job instead of publishing an empty release (ad314e58).
Full Changelog: v1.6.1...v1.6.2
[1.6.1] - 2026-10-04
๐ Changed
- Agent switcher in the sidebar: The sidebar shows one agent at a time. A switcher at its top picks another agent or creates one. Under it, Manage opens the agent's Automations, Channels and Settings pages, and Conversations lists its sessions. Automations and Telegram are no longer buttons in a conversation's top bar (#244).
- Channels page: Telegram is now the first section of an agent's Channels page, so later channels join the same page.
- Delete an agent from its Settings page: The action moved out of the sidebar row menu.
Full Changelog: v1.6.0...v1.6.1
[1.6.0] - 2026-10-04
โจ Features
- Automations in the Portal: An agent's top bar opens Automations, where owners create, edit, pause, delete and run a scheduled prompt now. Each run shows its status, timing, skip reason or error, the prompt it used, Telegram delivery, and the answer read from its conversation. The sidebar lists automation conversations in their own collapsible group (#239).
- Automation tools for the agent: pi manages automations itself through
automation_list,automation_create,automation_update,automation_delete,automation_runandautomation_runs, from the web, Telegram or a sub-session. A run started in a Telegram chat delivers to that chat by default, and only while that chat's pairing is unchanged. - Agent memory: pi keeps facts across conversations with
memory_remember,memory_search,memory_forgetandmemory_list. Memory is stored in the agent's profile, shared by its conversations and kept apart from other agents; search is keyword-only (BM25) (#241).
๐ Changed
- Scheduled jobs are now automations: The REST API moves from
/agents/:id/jobsto/agents/:id/automationsand.../runs, with matching operation names. Jobs created on v1.5.x are not carried over. - No automation limits: The 20-per-agent cap, 15-minute minimum interval, one-per-minute manual run limit and pause after repeated failures are gone. A cron still needs five fields and a valid time zone.
- Telegram pairs a chat with the agent: Linking a chat no longer asks for a
session or creates one. Each chat keeps its own conversation, started by its
next message;
/newstarts over, a conversation deleted in the Portal is replaced by the next message, and pairing again starts a new conversation. The Portal can no longer attach an existing session to a chat, and a binding'ssessionIdisnulluntil the chat's first message (#240). notifyfrom any conversation: A conversation that no chat is on, such as one started in the Portal, now notifies every chat paired with the agent (#240).
๐ Deployment
- A resumed transcript import recreates the migration worker, so it runs the current image instead of the container left by the interrupted run (4e713cbb).
๐ง Tooling
- Host MCP tools run through one shared executor, and their E2E suites share
one harness instead of switching on
TF_*variables (#242, #243).
Full Changelog: v1.5.1...v1.6.0
[1.5.1] - 2026-10-03
๐ Fixed
- Transcript migration: Importing a v1.4 session larger than 64 KiB no
longer fails with
incoming_too_long; the agent service accepts action messages up to 64 MiB (#237).
Full Changelog: v1.5.0...v1.5.1
[1.5.0] - 2026-10-03
โจ Features
- Concurrent sessions: Each conversation now runs in its own session actor
and sandbox container over the agent's shared workspace, so sessions of one
agent run at the same time. Stop,
/reloadand skill discovery in the Portal act only on the open session, and a running sibling no longer locks it (#230, #231, #232, #233). - Scheduled jobs: Agents run cron jobs as prompts in a reused or fresh
session, record skipped runs, pause a job after three failures in a row, and
deliver results to Telegram only while the chat's authorization is unchanged.
Owners manage them through
/agents/:id/jobs(#234). - Sub-sessions: pi can delegate a self-contained task with the
session_spawntool. The child runs in its own session, and its answer returns to the parent once the parent is idle. The Portal marks sub-sessions in the sidebar (#235).
โป๏ธ Changed
- Transcript migration: Existing agents' conversations move into their session actors during the first v1.5.0 deployment. The deployment requires a complete drain of the old worker, archives the agent state, and verifies every imported transcript before agents accept work again. Deploying an older release over migrated state is refused (#232, #236).
- Event streams: The Portal follows the agent's session list and the open session's messages as two separate streams (#233).
๐ง Tooling
agent:devrefuses a local Rivet Engine that serves another state directory (#236).
Full Changelog: v1.4.0...v1.5.0
[1.4.0] - 2026-10-01
โจ Features
- Steer a running session: A text message for the session whose task is
running, from the Portal or Telegram, now joins that run through pi's steer
instead of being refused as busy. Images,
/reload,/compact, and other sessions still wait for the run to finish (#228). - Telegram outcomes: The ๐ reaction on a message becomes ๐ when it is answered, ๐ข when the task fails, or ๐ซก when it is stopped (#228).
โป๏ธ Changed
- Built-in MCP: Sandboxes run pi 0.99.2 and use its built-in MCP client.
The host notification tool is now
mcp__tokenflux__notify. Existing agent volumes are migrated on their next sandbox start; a user override of thetokenfluxMCP server is no longer kept (#229). - Sandbox packages:
pi-web-accessis upgraded to 0.35.0, and pi's tool settings are left at their defaults (#229). - Portal boundaries: New API responses are decoded with schemas at the client boundary, with unchanged errors and session behavior (#219, #226).
๐๏ธ Removed
pi-mcp-adapterandcontext-modeare no longer installed in sandboxes, and their declarations are removed from existing agent volumes (#229).- Retire completed v1.3 migration scaffolding, Goose, and v1.2 rollback paths. Production deployment now refuses images older than v1.3.0 (#220, #221).
๐ง Tooling
- One root Oxfmt configuration and one
mise run linttask cover every owned source path, with anti-slop rules applied to the Portal, edge, and Agent runtime (#222, #223, #224, #227).
Full Changelog: v1.3.0...v1.4.0
[1.3.0] - 2026-09-30
โป๏ธ Changed
- TypeScript runtime: The public server now runs on Bun and serves the React Portal through TanStack Start. Home, contact, docs, and the public model directory render server-side; account sessions remain browser-owned (#208).
- Agent bridge: Sandboxes now run the TypeScript pi bridge with Node, preserving their workspaces, pi sessions, RPC, and streaming contracts (#208).
- Owned REST contracts: Effect HttpApi is the source of the health and Agent REST contracts. New API traffic remains a shallow compatibility relay, and MCP stays on its independent JSON-RPC transport (#208).
๐ Fixed
- Portal styles: Include shared component sources in the Start Tailwind build, restoring logo sizes and responsive layouts. Browser regression checks now verify desktop/mobile home layouts and the account sidebar logo (3a870451).
๐๏ธ Removed
- Retire the active Go server/bridge build chain, standalone legacy Vite entrypoint, and unused generated TypeScript SDK. Applied database migration history and documented source recovery points remain available (#217).
- Consolidate duplicate frontend checks and remove unused UI components and completed one-time cutover tasks (#216, #218).
Before upgrading, take a consistent backup of Agent state, every sandbox workspace volume, and uploaded images. Changing the image version alone does not restore those data stores.
Full Changelog: v1.2.2...v1.3.0
[1.2.2] - 2026-09-28
โจ Features
- Agent notifications: Agents can send a plain-text message to the Telegram chats linked to the running conversation, for progress on a long task or to alert the user about a task started from the web portal. Up to 10 per task; Telegram flood control is reported, never waited out (#205).
- Skills and slash commands: The agent composer lists installed pi skills
and runs
/clear,/compact, and/reload;/reloadpicks up newly installed extensions, skills, and templates without losing conversations. Telegram adds/new,/stop,/help,/reload,/compact,/model,/thinking, and/session(#204).
Full Changelog: v1.2.1...v1.2.2
[1.2.1] - 2026-09-28
๐ Fixed
- Models directory:
image/models appear under Images even when the upstream only advertises a Chat-compatible endpoint, and image provider filters use the model lab rather than theimagenamespace (d356195e). - Agent model selection: Exclude
image/models from agent and pi model choices; search available models by name in agent creation, settings, and sessions (5907f393).
๐ Documentation
- Record the normalized New API production catalog, its lab aliases, billing requirements, and DeepSeek routing (7c23ca39).
๐ Deployment
- Establish the v1.2.0 production release baseline (#203).
Full Changelog: v1.2.0...v1.2.1
[1.2.0] - 2026-09-28
โจ Features
- Default agent: Every account gets a default agent on
gpt-6-lunaand one dedicated usage key that all of its agents share, so agent spending is easy to find in usage (#199). - Telegram channel: Connect a Telegram bot to an agent from its Telegram panel, by pasting a token or by scanning to have one created, then link chats with a one-tap link or QR code (#200).
- Telegram groups and topics: Add an agent's bot to a group. Only the person who linked the group can use it there, by mentioning or replying to the bot. Each forum topic gets its own conversation (#201).
- Live progress in Telegram: While a task runs, the chat shows typing and
a preview of the reply and its tool calls. When the task finishes, the
preview is replaced by the formatted answer.
/new,/stop, and/helpare in the bot's menu (#201).
โป๏ธ Changed
- Creating an agent no longer asks for an API key; it uses the account's agent key (#199).
Full Changelog: v1.1.0...v1.2.0
[1.1.0] - 2026-09-27
โจ Features
- Agents (preview): Create pi agents from the portal's Agents page. Each one runs in its own sandbox with persistent sessions and a workspace, a choice of API key and model, and live progress (#191).
- Agent extensions: Sandboxes include pi's MCP adapter, web access, context-mode, and pi-vcc extensions by default (23ead117).
- Images in prompts: Attach images to agent prompts. The portal downscales large pictures, uploads them once, and prompts refer to them by ID (#192, #194).
๐ Bug Fixes
- Creating agents is rate-limited per client instead of across all users (#196).
๐ Security
- Agent sandboxes drop every Linux capability and cannot gain privileges, and deployment verifies they cannot reach internal services (#195).
- Edge logs no longer record API keys, credentials in query strings, or other request headers (#190).
๐ Deployment
- Releases publish the agent service and sandbox images as
vX.Y.Z-agentandvX.Y.Z-sandbox, and production runs the agent service with S3-compatible image storage on rustfs (#193, #194). - Production ships logs and traces to the host's OpenTelemetry agent (#190).
๐ Documentation
- Document the Agents architecture (8b36f372).
Full Changelog: v1.0.0...v1.1.0
[1.0.0] - 2026-09-25
TokenFlux 1.0 runs on a new platform: accounts, API keys, billing, usage, and model routing moved to it, and TokenFlux now serves the customer portal and API from one server. Entries below this section describe the product as it existed in their release and may mention components that have since been retired.
โจ Features
- Customer portal: Add Overview, API Keys, Models & Pricing, Usage, Billing, sign-in, and account-bound session handling (#167).
- OAuth sign-in: Sign in with GitHub and Google, with TokenFlux branding across the portal (#177).
- Account settings: Link another sign-in provider to an existing account and change the password after re-verifying your identity (#182).
- Public pricing: Browse models and prices without an account (#183).
- Legacy SDK base URLs: Clients configured with
/openai/v1or/anthropic/v1keep working (#181). - Account migration: Carry existing users, balances, sign-in providers, and eligible API keys over to the new platform (#165, #181).
- Chinese and English: The portal, sign-in, and pricing pages are available in English and Simplified Chinese, following the browser language with a switcher in the header (#188).
- Model filters: Filter models by provider, API, capability, context window, and pricing type, with search and filters applied instantly in the browser (#187).
- Portable deployment: Add locally validated Docker Compose and Kubernetes deployment contracts for the portal and API routing (#176).
๐ UI
- Redesign the landing page, models catalog, and portal with a new visual language (#187).
โป๏ธ Refactoring
- Single server: Serve the embedded portal and relay API traffic, including streams, from one Go server (#178).
- Legacy removal: Remove the legacy gateway, Better Auth runtime, TokenFlux business schema, Bifrost, sandbox, projects, MCP catalog, and their frontend and operations surfaces (#175); remove the one-time migration tooling after the upgrade (#185).
๐ Security
- API responses no longer reveal the upstream platform's name or version (#186).
๐ Deployment
- Production deployment manages the full stack, including the upstream platform's pinned version, and retires the pre-1.0 hosts' leftovers (#186).
๐ง Tooling
- Upgrade GitHub Actions to Node.js 24 releases (#174).
- Migrate UI linting and formatting to Oxc (#179).
Full Changelog: v0.6.4...v1.0.0
[0.6.4] - 2026-08-08
๐ Bug Fixes
- Protocol Model Admission: Exclude explicitly image-only models from text-generation catalogs and dispatch while retaining compatibility for legacy models without modality metadata.
Full Changelog: v0.6.3...v0.6.4
[0.6.3] - 2026-08-08
โจ Features
- Bifrost Image Generation: Add a billed OpenAI-compatible image-generation route at
/openai/v1/images/generations, with model admission restricted to image-output models. The existing Replicate/v1/images/generationsAPI remains unchanged.
๐ก๏ธ Safety
- Fail-Closed Image Streaming: Reject streaming image requests until event-level usage extraction can guarantee complete billing.
Full Changelog: v0.6.2...v0.6.3
[0.6.2] - 2026-08-08
๐ Bug Fixes
- Volume Pricing: Apply cache read/write and auxiliary request price overrides when a model's volume-pricing tier matches, preventing underbilling for large-context cached requests.
Full Changelog: v0.6.1...v0.6.2
[0.6.1] - 2026-08-08
๐ Bug Fixes
- Safe Provider Model Sync: Reject empty provider catalogs instead of deleting existing model mappings, and preserve operator-managed priority, enabled state, pricing, modalities, and supported parameters for models retained by a successful sync.
๐ง Operations
- Container Health Checks: Add static HTTP health probes to the distroless TokenFlux and Auth images so Docker and Compose report native health status without adding a shell to either runtime image.
Full Changelog: v0.6.0...v0.6.1
[0.6.0] - 2026-08-08
โจ Features
- Bifrost Gateway PoC: Add an opt-in Bifrost provider with OpenAI Chat Completions, OpenAI Responses, and Anthropic Messages protocol support while keeping provider selection, fallback, authentication, quota, and usage accounting in TokenFlux (#162)
- OpenRouter Model Sync: Refresh configured OpenRouter provider models automatically every 12 hours while retaining manual sync as a fallback (#151)
- Persistent Agent Memory: Add a durable
memory.mdfile and consolidate persistent persona context into one extension (#148)
The Bifrost integration is an opt-in local proof of concept and is not enabled in the production deployment by default.
๐ Bug Fixes
- Telegram Streaming: Stream accumulated agent responses by editing one message without overwriting previously emitted text (#147)
- Skip scheduled model synchronization for disabled OpenRouter providers (#162)
๐ง Tooling
- Prepare repeatable setup and resume scripts for the Amp orb development environment (#161)
๐ฆ Dependencies
- Update
go.opentelemetry.io/otel/sdkfrom 1.39.0 to 1.40.0 (#150)
Full Changelog: v0.5.10...v0.6.0
[0.5.10] - 2026-02-27
โจ Features
- Replicate Billing Automation: Auto-scrape Replicate billing configuration and consolidate command packages for easier provider sync (#146)
- Persona Consistency: Unify soul and user memory under a single persona system for projects and runtime context (#144)
โป๏ธ Refactoring
- Refactor persona prompt composition to append content instead of prefixing for cleaner memory behavior (#144)
Full Changelog: v0.5.9...v0.5.10
[0.5.9] - 2026-02-25
โจ Features
- Soul Support: Add Soul support for agent personality (#143)
- Telegram Pagination: Inline keyboard with pagination for /projects and /sessions in Telegram bot (#142)
โป๏ธ Refactoring
- Refactor runtime architecture and tighten container config flow (#139)
๐ฆ Dependencies
- Bump
refraction-networking/utlsfrom 1.7.1 to 1.8.2 (#141)
Full Changelog: v0.5.8...v0.5.9
[0.5.8] - 2026-02-06
โจ Features
- Skills & MCP Sync: Add skills and MCP server synchronization for agent containers with background installation and system prompt registration (#136)
โป๏ธ Refactoring
- Migrate deployment to Uncloud with env_file secrets for improved configuration management (#135)
Full Changelog: v0.5.7...v0.5.8
[0.5.7] - 2026-02-06
โจ Features
- Projects UI/UX Enhancement: Improved projects interface with better user experience (#134)
โป๏ธ Refactoring
- Remove runtime bind mounts and drop
AGENT_CONTAINER_PI_CONFIG_DIRfor cleaner container configuration (#133)
Full Changelog: v0.5.6...v0.5.7
[0.5.6] - 2026-02-06
โจ Features
- Agent Session Storage: Database-backed agent session storage for persistent session management (#132)
โป๏ธ Refactoring
- Improve formatContent to parse streaming JSON for better response handling
Full Changelog: v0.5.5...v0.5.6
[0.5.5] - 2026-02-05
๐ Bug Fixes
- Fix Docker-in-Docker bind mount error by creating pi agent temp directories under dataDir (#8f7f8606)
Full Changelog: v0.5.4...v0.5.5
[0.5.4] - 2026-02-05
โป๏ธ Refactoring
- Use ephemeral temp directories for pi agent config
- Use correct GID for container user and chown operations
- Simplify landing page using Tailwind classes (#131)
๐ Bug Fixes
- Resolve 404 and TypeError on account page
- Exclude 386 arch from goreleaser builds
๐ฅ Chore
- Remove legacy MCP and subagent extensions and web skills
๐ฆ Dependencies
- Bump @modelcontextprotocol/sdk from 1.25.3 to 1.26.0 (#130)
Full Changelog: v0.5.3...v0.5.4
[0.5.3] - 2026-02-04
โจ Features
- Admin Dashboard: Add admin dashboard with Telegram webhook management
- Telegram Onboarding: Add
/startonboarding command and register bot commands - Provider Model Sync: Add provider model map sync settings for easier configuration
๐ Bug Fixes
- Resolve nested button hydration error in ProviderCard component
๐ Documentation
- Add AI Agent Projects documentation
Full Changelog: v0.5.2...v0.5.3
[0.5.2] - 2026-02-04
โจ Features
- IM Integration: Add Telegram and Feishu integration for chat notifications (#128)
- Project Templates: Add project templates for quick project creation (#125)
- MCP & Skills Config: Add MCP servers and skills configuration to project form (#127)
- Default Alfred Project: Default Alfred project with auto-context and IM integration UI (#129)
Full Changelog: v0.5.1...v0.5.2
[0.5.0] - 2026-01-29
Major release introducing Projects - interactive AI agents running in sandboxed Docker containers with full file system access, SSE streaming, and a ChatGPT-like interface.
โจ Features
- Projects (AI Agents): Full-featured AI agent system with sandboxed Docker execution (#109)
- Container-based execution with Docker SDK for secure, isolated agent runtime
- Real-time SSE streaming with reconnection support
- Session management with message history persistence
- ChatGPT-like landing page with file upload support (#121)
- File explorer with browsing, editing, and diff view (#117)
- Go RPC wrapper for container runtime communication (#120)
- Thinking level control and session commands API
- Multiple runtime modes: Socket, HTTP, and TCP
- Usage Analytics: Enhanced usage analytics page with detailed metrics (#118)
- Pi Agent Integration: Embedded piagent config with sandbox CI (#123)
๐ Bug Fixes
- Normalize OpenRouter usage field to standard ChatUsage format (#108)
- Use correct JSON field name for tool arguments in AI SDK
- Show tool params during streaming
- Improved Docker-in-Docker path handling and container networking (#124)
โป๏ธ Refactoring
- Use ai-elements CodeBlock for syntax highlighting in chat
- Display thinking content before activities in chat UI
- Simplified projects feature and removed v2 suffixes (#122)
- Updated sandbox Dockerfile with improved tooling
โฌ๏ธ Dependencies
- Bump github.com/docker/docker to v28.0.0
Full Changelog: v0.4.1...v0.5.0
[0.4.1] - 2026-01-06
โจ Features
- Providers are now configurable with custom endpoints and headers, making it easier to plug in self-hosted or proxy backends. (#104)
- The list-models API now aggregates models across all providers, so clients can discover everything from one place. (#106)
๐ Bug Fixes
- Admin authentication now requires
ADMIN_EMAIL, closing a gap where admin auth could be misconfigured. (#107) - The TokenFlux config now includes the
ADMIN_EMAILsecret by default.
๐ Documentation
- The changelog now lives in Fumadocs for a more consistent docs experience. (#103)
Full Changelog: v0.4.0...v0.4.1
[0.4.0] - 2026-01-03
โจ Features
- Documentation Migration: Migrate docs from Mintlify to Fumadocs (#100)
๐ Documentation
- Update API reference documentation (#101)
Full Changelog: v0.3.8...v0.4.0
[0.3.8] - 2025-12-31
โจ Features
- VLMs: Add MCP server for image generation (#99)
- LLMs: Add database-backed LLM model configuration (#97)
โป๏ธ Refactoring
- Consolidate providers package and add builder pattern (#98)
Full Changelog: v0.3.7...v0.3.8
[0.3.7] - 2025-12-29
โจ Features
- LLMs: Prioritize OpenRouter model metadata in list models API
Full Changelog: v0.3.6...v0.3.7
[0.3.6] - 2025-12-24
โจ Features
- Add Hurl API tests for LLM endpoints (#96)
- Add model alias resolution support (#93)
- Track and store usage data for OpenCode models (#92)
- Providers: Add fallback support when provider returns error
- Support OpenCode messages models
- Allow model API overrides
- Add LLM dispatcher wiring
- Add OpenCode provider
- Add LLM provider registry
๐ Bug Fixes
- Update test assertions and add DisableQueue for test isolation
- OpenCode: Trim whitespace when checking for missing API key
- Providers: Add response body to fallback error logs for debugging
โป๏ธ Refactoring
- Deduplicate LLM provider implementations with base package (#95)
๐ Documentation
- Align OpenCode model API config
๐งช Testing
- Make OpenCode tests config-driven
Full Changelog: v0.3.5...v0.3.6
[0.3.5] - 2025-12-23
โจ Features
- Initial LLM provider dispatch implementation
Full Changelog: v0.3.4...v0.3.5
[0.3.0] - 2025-12-09
โจ Features
- Unified API gateway for LLM providers
- OpenAI-compatible API endpoints
- Multi-provider support (OpenAI, Anthropic, Google, Mistral, and more)
- Real-time SSE streaming
- Usage tracking and billing
Full Changelog: v0.2.0...v0.3.0