Changelogs¶
0.0.44¶
Upgrade notes
- Take a database snapshot before you upgrade: this release adds a migration (item 9). Stacks with
AutoUpdateBRConnectorset totrue(ec2andlambdacompute types) pick up the newlatestimage automatically at 00:00 UTC. - Updating a stack to the 0.0.44
quick-build-brconnector.yamltemplate changes the UserData: anec2instance is stopped and started once, andlambdaandlambda-webstacks created withKeepEc2set tofalsemust be recreated. See Template updates of existing stacks. lambda-webstacks now build the deployment package on a stack update and run the migrations at start-up (item 2), including the 0.0.43 migrations if they were never applied, which delete the models of retired providers (see 0.0.43).- The alternative ECS template issues a new admin key on update; read it from the SSM parameter
/brconnector/admin-key-<stack name>. Direct access to its ALB stops; useCloudFrontURL(item 6). - The Lambda@Edge ARN changes: set
LambdaEdgeVersionArnto the new output (item 6). - Image models stay unbilled until
price_per_imageis set in their config (item 9). - bedrock-converse prompt-cache tokens are now billed (item 9).
- openai-compatible and azure-openai streams now send
stream_options. If your upstream or Azure API version rejects it, set"streamUsage": falsein the model config (item 9). - Claude Code Web stacks: the template update does not rebuild the backend image. To get item 11, change
ClaudeCodeWebImageBuildId(for example from1to2) in the stack update; see Known limitations.
-
CI - Unit tests, the build and the template checks now run on every pull request.
-
lambda-web Updates - The deployment package is now built by CodeBuild. A stack update that changes
SourceRepoUrl,SourceRefor the newWebFnBuildIdparameter rebuilds it and deploys it as a new Web Function revision, and so does the first update to the 0.0.44 template.SourceRefmay now be a commit. See AutoUpdate.
- A failed build fails the update, names the failing step and leaves the running revision in place.
- The rollback builds the previousSourceRefagain, so keep that ref available until the update completes. If the rollback fails too, runaws cloudformation continue-update-rollback --stack-name <stack name> --resources-to-skip WebFnPackage.
- The Web Function now applies the database migrations at start-up (SKIP_DB_INSTALLis no longer set), under one lock that covers the whole install. -
EC2 Boot Log and Run Script
- The stack’s EC2 instance no longer writes keys or passwords to its boot log or console. New stacks write the BRConnector start command to the root-only/root/brconnector-run.sh(mode 0700), and the nightly update runsbash /root/brconnector-run.sh latest. Stacks created before 0.0.44 keep updating from the command recorded at first boot.
- After the template update, the nightly update on existing ec2 stacks also makes the boot log and the generated key files readable by root only.
- Admins of stacks created before 0.0.44 may rotate the admin key, stored in the SSM parameter/brconnector/admin-key-<stack name>, if other users can log in to the instance or read its console output. See Admin key on stacks created before 0.0.44.
- ThePGPasswordparameter is now NoEcho. -
Regions -
ec2,lambdaandecsnow work in 17 Regions: us-east-1, us-east-2, us-west-1, us-west-2, ca-central-1, sa-east-1, eu-west-1, eu-west-2, eu-west-3, eu-central-1, eu-north-1, ap-northeast-1, ap-northeast-2, ap-northeast-3, ap-southeast-1, ap-southeast-2 and ap-south-1.lambda-webworks only where Lambda Web Functions are available: us-east-1, us-east-2, us-west-2, ap-northeast-1 and eu-west-1 (see AWS Capabilities by Region for the current list), and the template refuses it elsewhere. Claude Code Web needs AgentCore Runtime, so it is not available in ap-northeast-3. See Supported Region. -
IAM Roles and Security Groups
- The helper EC2 role, the cleanup function’s role and the nightly lambda update role now grant only the calls they make. The broad managed policies are removed: ECR, Lambda, ECS and EC2 full access, EC2 read-only, CloudWatch Logs full access and CodeBuild admin.
- The cleanup function can terminate only this stack’s instances.
- The nightly update output is still not written to S3.
- The ECS load-balancer security group is created only for theecscompute type. -
Alternative ECS Template and Lambda@Edge
- The alternative ECS template generates its admin key from a cryptographic random source (32 characters). A stack update issues a new key; read it withaws ssm get-parameter --name /brconnector/admin-key-<stack name> --query Parameter.Value --output text. TheAdminApiKeyoutput is replaced byAdminApiKeyParameter.
- Its ALB admits only CloudFront, and theLoadBalancerURLoutput is removed, so direct ALB access stops; useCloudFrontURL.
- The Lambda@Edge function no longer logs request headers and runs on nodejs24.x. It publishes versionv2with a new ARN: setLambdaEdgeVersionArnof your BRConnector stack to the newLambdaEdgeVersionArnoutput. -
Image URLs - See the FAQ.
- Image URLs in chat requests are fetched directly from the BRConnector host, not throughHTTPS_PROXYorHTTP_PROXY, and only from public addresses. Every redirect is checked again, at most 3. The response must beimage/*, at most 10 MiB, and arrive within 15 seconds.
- Deployments without direct internet egress should send images to chat models asdata:URLs, which work as before.
- Other URLs, and unsupported schemes that used to send an empty image, now get HTTP 400.
- Content blocks whosesourcehass3Locationget HTTP 400; send the content inline.
- nova-canvas takeshttp(s)URLs, ors3://URLs in the model’s owns3Bucket, and answers a rejected image URL with HTTP 400. -
Shared-key Endpoint Removed -
/open/get-shared-api-keyis removed, so the BRClient portal no longer fills in a key: BRClient users enter their own key. A key named__shared-api-key__is now an ordinary key. -
Billing
- bedrock-converse now bills prompt-cache reads and writes atprice_cache_readandprice_cache_writefrom the model config (per token;price_inwhen unset), and counts them in the recorded input tokens. 1-hour cache writes bill atprice_cache_write. Set both prices on your own converse models that use prompt caching. See bedrock-converse.
- The migration2026-10-23-converse-cache-prices.sqlfills in the two prices on theclaude-opus-5-5-chat,claude-sonnet-5-5-chatandclaude-haiku-5-5-chatpresets where they are absent: a cache read at 0.05 ofprice_infor Opus and Sonnet and 0.1 for Haiku, a cache write at 1.25 of it. A price an admin has set is kept.
- openai-compatible and azure-openai streams now ask the upstream for usage and are billed once the stream ends, whatever the finish reason. The usage-only chunk reaches only clients that asked for it. The new config keystreamUsage: falseturns this off for an upstream that rejectsstream_options.
- bedrock-agent calls are now billed from the token usage in the agent’s trace. The trace is not sent to clients or logged.
- Knowledge-base calls withbedrockModelArnare now billed from an estimate of 4 characters per token over the question, the answer and the references cited in the answer; references that are not cited are not counted.
- painter, nova-canvas and azure-openai-image now record each image generation and bill it at the new config keyprice_per_image(per image). When it is unset the price is 0, so set it to bill image generation.
- A recharge amount with more than 2 decimals gets HTTP 400, and a recharge is recorded in one transaction. -
Feishu Bots - Feishu bots now keep a single WebSocket client per connector and close replaced or removed ones.
-
Claude Code Web -
/pingnow reports the time of the last real activity, so the AgentCore idle timeout can fire, andservedelivers SIGTERM to the server for a clean shutdown. The chat agent now runs Claude Code 2.1.310 (claude-agent-sdk 0.2.174, was 2.1.1): commands such as/mcpand/costrun and show their output instead of being merged into the next message, new sessions no longer make three Warmup calls, and the cost shown in the chat matches the BRConnector bill. Resuming a session id that has no transcript returns 404 instead of 500 #169. Existing stacks get this once a stack update changesClaudeCodeWebImageBuildId(see the upgrade notes). -
Docs - AutoUpdate per compute type, how to update existing stacks, and a web search budget example in Claude Code Web.
-
Dependencies - nodemailer 10.2.1 #165 and vite 6.4.5 #166. Claude Code Web: source-map-js 1.2.2 #156, nanoid 3.3.20 #157, postcss 8.5.31 #158, react-router and react-router-dom 7.18.4 #159, baseline-browser-mapping 2.11.31 #160, browserslist 4.29.4 #161, vite 7.3.7 with esbuild 0.28 #162, aiohttp 3.14.4 #163 and pyjwt 2.15.0 #167.
-
lambda Compute Type Fixes
- Newlambdastacks could not be reached: function URLs created since October 2025 also need thelambda:InvokeFunctionpermission. The template now grants it, limited to calls through the function URL, and updating an existinglambdastack adds the permission.
- WithKeepEc2set tofalse, the helper instance is now terminated after setup.
0.0.43¶
Upgrade warning - Take a database snapshot before you upgrade: the upgrade deletes the models of the retired providers (item 4) and adds preset models (item 2). Stacks with AutoUpdateBRConnector set to true (ec2 and lambda compute types) pick up the new latest image automatically at 00:00 UTC.
-
Claude Code Web - Claude Code in the browser at
/cc, served by BRConnector and running on Amazon Bedrock AgentCore Runtime, with one microVM and one S3 workspace per API key. Its model calls go back through/v1/messageswith the user’s key, so quotas and billing apply. Turn it on withEnableClaudeCodeWebin the CloudFormation template; see Claude Code Web. #155
-"skipWebFetchPreflight": trueis written into each user’s~/.claude/settings.jsonwhen the key is missing. A value the user has set is kept.
- The new parameterEnableWebSearchdefaults totrue, also when an existing stack is updated. With Claude Code Web on, in us-east-1, us-east-2, us-west-2, eu-west-1, ap-southeast-2 or ap-northeast-1, it creates an AgentCore Gateway with a Web Search target. Only the runtime role may call the gateway.
- Searches are billed by AWS to the account that runs the stack (about USD 7 per 1,000 queries), outside BRConnector quotas. Consider an AWS Budgets alert, or setEnableWebSearchtofalse.
- While the gateway is configured, Claude Code’s built-in WebSearch tool is hidden. -
Preset Models on Existing Databases - At start-up (on every compute type except
lambda-web, see item 4), BRConnector applies each SQL migration insrc/scripts/migrations/that the database has not had yet. Preset models that an existing database lacks are added and bound to group 1; a model name that already exists is left unchanged. #153 -
Model Presets - Seven GPT-6 and GPT-5.6 presets on bedrock-runtime-openai #152.
claude-opus-5-5-chat,claude-sonnet-5-5-chatandclaude-haiku-5-5-chaton bedrock-converse, now used by NoDB mode and knowledge-base summaries. The Claude 3.x presets and NoDB defaults are removed; existing models are left as they are. #154 -
Retired Providers -
aws-executor,urls-readerandweb-minerare removed; use Claude Code Web (/cc) instead.
- The upgrade migration deletes the models on these providers and their key and group bindings. History (threads and sessions) is kept.
- A request to a model on one of these providers gets HTTP 400 that points to Claude Code Web (/cc). Once the model is deleted, the request gets the usual unknown-model answer, and so does a smart-router rule,localLlmModelor bot connector that names it.
-lambda-webstacks are different. Updating the stack does not deliver 0.0.43: the deployment package is built only when the stack is created, and the function does not run migrations at start-up. To run 0.0.43, deploy a newlambda-webstack; its database is set up for 0.0.43 when the stack is created. To bring an existing database up to date by hand, take a snapshot, then apply the files insrc/scripts/migrations/in file-name order:2026-10-20-preset-models.sql,2026-10-20b-claude-chat-presets.sqland2026-10-22-retire-providers.sql. The last one runs:BEGIN; DELETE FROM eiai_key_model WHERE model_id IN (SELECT id FROM eiai_model WHERE provider IN ('aws-executor', 'urls-reader', 'web-miner')); DELETE FROM eiai_group_model WHERE model_id IN (SELECT id FROM eiai_model WHERE provider IN ('aws-executor', 'urls-reader', 'web-miner')); DELETE FROM eiai_model WHERE provider IN ('aws-executor', 'urls-reader', 'web-miner'); COMMIT; -
Model Id Override Removed - A model string
name/<id>that is not itself a configured model name now gets HTTP 400, for every key. This also applies to Feishu bot, knowledge-base and smart-router model ids that contain/, and to azure-openai models. Amodel_idfield in the request body is ignored. To use an upstream model id, configure a model for it; a configured model name may contain/(FAQ). -
Billing
- Spend over the monthly quota is now drawn from the balance.
- The balance can go below zero by at most the last calls. After that, calls are refused until a recharge, or until the next month when the monthly quota is above 0.
- Charges are atomic, and a recharge adds to the stored balance.
- A recharge reaches all instances within 60 seconds, through the cache.
- Themonth_feeshown for a key keeps last month’s value until the key’s first charge in the new month. -
Session-Id - A
Session-Idlonger than 128 characters gets HTTP 400 on every route. -
User APIs
-/user/model/listreturns onlyname,provider,price_in,price_out,multipleandgroup_name.
-/user/thread/listreturns only the caller’s own threads, andlimitis capped at 100 (on/admin/thread/listtoo).
-orderByon the session and payment lists accepts a fixed set of values and falls back to the default order for anything else. -
API Keys and Logs
- New API keys are generated from a cryptographic random source.
- SQL parameters and whole error objects are no longer logged, outside debug mode.
0.0.42¶
-
bedrock-runtime-anthropic Provider - New provider for Claude Code and other Anthropic Messages clients.
POST /v1/messagesis passed through to Bedrock’s native/anthropic/v1/messagesroute, sosystem,tools,thinking,cache_controlandcontext_managementreach the model unchanged. It bills input, cache read, 5-minute and 1-hour cache writes, and output, and keeps each session on one region and credential so that prompt caching keeps hitting. Six Claude presets are added for new databases. #147 -
bedrock-runtime-openai Provider - New provider that passes OpenAI Chat Completions requests through to Bedrock’s
/openai/v1/chat/completionsroute, for OpenAI-format models such as Kimi K3 and GLM. Seven presets are added for new databases. #141 -
Anthropic-format Errors on /v1/messages - Errors on
/v1/messagesnow come back as{"type":"error","error":{...}}with a matching status, for example 401authentication_erroror 403permission_error, so Anthropic SDK clients can handle them. Other routes are unchanged. #147 -
AWS Lambda Web Functions - New
lambda-webComputeType in the CloudFormation template that runs BRConnector on Lambda Web Functions: no adapter, native response streaming, billing by active CPU, and requests up to 900 seconds. The endpoint defaults toIamAuth, so only the CloudFront distribution can reach it, and every request is also checked against a shared origin secret. The existinglambdaComputeType is unchanged. #145 #148 -
Concurrency Fix: One Provider Instance per Request - Concurrent requests no longer share provider state or model data. #144
-
bedrock-converse Fixes
-temperatureandtop_pare no longer sent to Claude models that reject them (Opus 4.x and Claude 5.x). AValidationExceptionon a single-region model is no longer retried. #146
- Bedrock API keys and AK/SK credentials are scoped to their own model. #138
- Thethinkingparameter is read from the Anthropic request body. #122 -
BRClient Portal - With no API key saved, the portal turns on BRConnector mode and opens the settings page. #142
-
Container Runs as Non-root - Both Docker images now run as the
nodeuser, the health check no longer depends on curl (the container used to report unhealthy), and the Feishu bot writes its temporary files to the system temp directory. #150 -
Build and Dependencies - devDependencies are kept out of
dist/package.json#140. Dependency updates: #109 #110 #111 #114 #115 #116 #128 #132 #133 #134 #135 #136 #137 #143
Upgrade notes: preset models are inserted only into new databases. On an existing database, add the models you want in the admin UI. Admin Price-In / Price-Out are per 1 million tokens, while the cache prices in a model’s config are per token.
0.0.41¶
-
Anthropic Messages API Compatibility - Added a new endpoint
POST /v1/messagesthat is fully compatible with the Anthropic Messages API. Clients using the Anthropic SDK can now connect directly without modification. Supports text, tool use, thinking content blocks, and both streaming and non-streaming modes. -
x-api-key Header Support - Added support for the
x-api-keyheader (Anthropic SDK default) in addition to the existingAuthorization: Bearerheader. -
Bug Fix: claude-opus-4 temperature/topP - Removed deprecated
temperatureandtopPparameters forclaude-opus-4and later models, which causedinvalid_request_error. -
Build Fix - Removed hardcoded local path alias for
kui-vueinvite.config.jsthat caused build failures on non-author machines. Downgradedvitefrom experimentalrolldown-viteto stable^6.3.3.
0.0.40¶
-
AWS Bedrock Bearer Token Support - Added support for AWS Bedrock API Key (Bearer Token) authentication method in addition to traditional AKSK credentials.
-
Multi-tool Call Fix - Fixed an issue where multiple tool calls in a single response were not handled correctly in streaming mode.
0.0.38¶
-
Bedrock App Profiles Support - Added support for Bedrock application profiles, allowing better configuration management for different deployment scenarios. #87
-
PostgreSQL Database Upgrade - Upgraded standalone PostgreSQL database from version 16.3 to 16.10 for improved performance and security. #89
-
Zero-Length Messages Fix - Fixed an issue where Bedrock would fail when processing zero-length messages. #90
-
Tool Use Enhancement - Improved tool use functionality with bug fixes and stability improvements. #91 #92
-
General Improvements - Various bug fixes and performance optimizations.
0.0.37¶
-
bedrock-converse Provider Fix - Fixed an issue with Claude new models: ‘The model returned the following errors: temperature and top_p cannot both be specified for this model. Please use only one.’
-
Frontend Caching Enhancement - Added 1-month caching for frontend pages served by koa-static-server.
0.0.36¶
- anthropic_beta Features Support - Added support for anthropic_beta features, including:
- Compatible with Claude 3.7 Sonnet: token-efficient-tools-2025-02-19, output-128k-2025-02-19
- Compatible with Claude Sonnet 4: context-1m-2025-08-07
These features are automatically integrated into the backend logic without requiring separate configuration. Reference: AWS Bedrock Anthropic Claude Parameters
- Thinking Mode Enhancement - In thinking mode, content is now set to empty string instead of null.
0.0.35¶
-
New Provider: gemini - Added a new Google Gemini provider. Thanks to “daniexon” for the contribution.
-
Enhancement: Tool Calls for openai_compatible Provider - The openai_compatible provider now supports passing tool calls to the model. Thanks to “bdavj” for the contribution.
-
Format Mapping: Bedrock Converse finish_reason - Mapped Bedrock Converse finish_reason to OpenAI format for improved compatibility.
-
New Parameter Support: max_completion_tokens - Added support for the max_completion_tokens parameter.
-
New Docker Files - Added two new Dockerfiles.
0.0.34¶
- Bug Fixes - Fixed several minor bugs to improve system stability.
0.0.33¶
-
New Provider: bedrock-agent - Added a new provider for Amazon Bedrock Agents. This is a simple implementation that allows you to interact with your Bedrock Agents. Documentation
-
New Provider: azure-openai-image - Added support for Azure OpenAI image generation models. Documentation
-
Removed Providers - Removed several deprecated providers (bedrock-claude3, bedrock-mistral, bedrock-llama3) as they can be fully replaced by the bedrock-converse provider.
-
Docker Optimization - Removed AWS CLI commands from the Docker file to reduce image size.