Releases: obot-platform/obot
v0.16.4
v0.16-4-rc1
Fix: Re-enable images-bundle (#5771)
Full Changelog: v0.16.3...v0.16-4-rc1
v0.16.3
This release fixes compatibility issues between Obot and MCP clients that rely on the mcp-remote NPM package, such as Claude Desktop.
It also addresses an issue where uvx and npx based servers fail to launch with an error that says ...unknown command "/run/nanobot.yaml" for "nanobot run".
Full Changelog: v0.16.2...v0.16.3
v0.16.2
What's Changed
- chore: use primary styles for instance restart button by @njhale in #5645
- Clarify imagePullSecrets vs mcpImagePullSecrets by @cjellick in #5646
- chore: add basic networkpolicy to prevent unwanted mcp server communication by @drpebcak in #5615
- docs: show curl example for testing an API key by @g-linville in #5652
- fix: need to use root instead of item in the loop by @cloudnautique in #5654
Full Changelog: v0.16.1...v0.16.2
v0.16.1
This patch release addresses some fit and finish bugs present in the v0.16.0 release.
What's Changed
- enhance: move connect new server to connect URL screen by @ivyjeong13 in #5573
- fix: use fallbackCopy when navigator.clipboard isn't available by @ivyjeong13 in #5593
- enhance: save new task on initial change by @ivyjeong13 in #5496
- fix: prevent reopening create form on search query update by @ryu-man in #5622
- chore: remove stutter in add component confirm dialog by @njhale in #5623
- enhance: add connect to server for chat project mcp view by @ivyjeong13 in #5604
- enhance: change to slide in form for create api key by @ivyjeong13 in #5627
- fix: always show table filter option & table related bugs by @ivyjeong13 in #5600
- fix: connect to server for project multiuser missing by @ivyjeong13 in #5630
- fix: move selected count above mcp search count for api servers by @njhale in #5633
- fix: connect to server not opening when switching between project mcps by @ivyjeong13 in #5639
- fix: fixed header calculate after page transition duration by @ivyjeong13 in #5641
- fix: time columns sort for api-keys by @njhale in #5643
- fix: correct nullish table column sort by @njhale in #5644
Full Changelog: v0.16.0...v0.16.1
v0.16.0
We’re excited to announce the v0.16.0 release of the Obot MCP Platform. This is a significant update focused on improving enterprise readiness and operational control. It introduces API key authentication for programmatic access, model access policies for governing model usage, and a Kubernetes capacity dashboard in the admin UI to provide better visibility into cluster resources, along with numerous bug fixes and improvements across the platform.
Big Updates
API Key Authentication
Users can now create API keys that can be used to access MCP servers programmatically. API keys are tied to a user account, can be scoped to specific MCP servers, and may include an optional expiration.
Model Access Policies
Model access policies allow administrators to control which language models users and groups can access in chat. This makes it possible to limit access to higher-cost or more powerful models while maintaining a default experience for most users.
Azure OpenAI Model Provider Authentication
The Azure OpenAI model provider now supports both Microsoft Entra authentication and API key authentication. This allows deployments to be configured using Entra-based identity or static API keys, depending on organizational requirements and Azure setup.
Kubernetes Capacity Dashboard
The admin UI now includes a Kubernetes capacity view that aggregates requested CPU and memory across MCP servers. This provides clearer visibility into cluster utilization and helps prevent resource overcommitment by blocking deployments that would exceed available capacity.
Notes
Legacy commands have been removed from the obot CLI. The remaining supported commands are: completion, help, server, token, and version
Getting Started
docker run -d --name obot -p 8080:8080 -v /var/run/docker.sock:/var/run/docker.sock \
ghcr.io/obot-platform/obot:latestFor more details, see the documentation:
What's Changed
- fix: delete button showing incorrectly & incorrect delete call by @ivyjeong13 in #5356
- fix: remove reference of old admin_ui_pid in killing servers by @ivyjeong13 in #5262
- enhance: allow regenerating tool overrides by @njhale in #5358
- chore: adjust nanobot configuration for new auth settings by @thedadams in #5357
- Fix: Don't tag any pre-releases as latest by @cjellick in #5368
- fix: composite mcp servers by @njhale in #5317
- chore: change release workflow to run on depot by @drpebcak in #5369
- fix: show user name instead of user id by @ryu-man in #5344
- fix: adjust when to call update-url endpoint and hide 400 authorization errors when connecting to a server in chat view by @ryu-man in #5341
- fix: ui: providers: support sensitive optional params by @g-linville in #5365
- enhance: better detect host IP by @thedadams in #5366
- docs: add Azure OpenAI docs by @g-linville in #5376
- feat: implement group role assignment by @ryu-man in #5061
- fix: stop erroring when client requests incorrect scopes by @thedadams in #5382
- enhance: add pass-through LLM proxy for responses and anthropic by @thedadams in #5370
- Chore: Allow UI to hit remote API for dev by @cjellick in #5380
- doc: add entra group login restriction instructions by @njhale in #5379
- fix: ensure audit log token hash is correct by @thedadams in #5387
- docs: add okta group login restriction docs by @njhale in #5392
- fix: update access control rules after deletion using
invalidatefunction by @ryu-man in #5391 - fix: use remote shim image for composite runtimes in kubernetes by @thedadams in #5404
- fix: stop running model provider when updating the credential by @thedadams in #5406
- chore: update copyright year to 2026 by @cjellick in #5417
- fix: ui: use the group ID instead of name in group role assignments by @g-linville in #5415
- feat: add API keys by @g-linville in #5389
- feat: introduce model access policies by @njhale in #5393
- fix: improve group assign dialog UI by @ryu-man in #5421
- feat: add UI for API keys by @g-linville in #5407
- fix: format YAML output for resource requests and limits by @ryu-man in #5397
- enhance: dont give admins implicit access to models by @njhale in #5427
- fix: prevent assign group role dialog beign cut off in small screens by @ryu-man in #5440
- fix: restrict export options to admin and owner groups by @ryu-man in #5444
- fix: prevent showing account link on profile page by @ryu-man in #5442
- fix: handle the case when user selects many values by @ryu-man in #5441
- chore: add github workflow to announce releases to discord by @njhale in #5452
- docs: add API keys docs by @g-linville in #5425
- fix: model access policy auditor view and form behavior by @njhale in #5448
- docs: add model access policy docs by @njhale in #5446
- fix: update nanobot hooks definition by @thedadams in #5459
- fix: PUP w/ auditor role not able to create servers by @ivyjeong13 in #5437
- fix: enable restart, details, and logs for remote MCP servers by @njhale in #5470
- docs: model providers: add note about Entra and Microsoft Foundry by @g-linville in #5455
- fix: exclude static assets from rate limiting by @cjellick in #5471
- docs: improve docker deployment auth and port conf by @cjellick in #5474
- fix: dont allow admins to connect to mcp servers they dont have access to by @njhale in #5439
- fix: replace "Connector" words with "MCP Server" for consistency by @ryu-man in #5462
- chore: ui: add key prefix column to API keys table by @g-linville in #5472
- fix: show model name and ID in permission error message by @njhale in #5473
- docs: fix canonical URL issues with trailing slash by @cjellick in #5475
- fix: api keys: access should always be allowed for * by @g-linville in #5479
- fix: default chat model selection by @njhale in #5487
- fix: audit logs: omit empty API key prefixes by @g-linville in #5476
- feat: introduce pair params to enhance Azure Open AI configuration handling by @ryu-man in #5451
- feat: add k8s resource reporting for MCP servers by @cloudnautique in #5485
- fix: use exposed port for connecting to component MCP servers in docker by @thedadams in #5495
- fix: diff showing incorrectly removed/added on new/old versions by @ivyjeong13 in #5492
- fix: add redirects for broken referral links by @cjellick in #5500
- docs: fix one more broken referral link by @cjellick in #5501
- chore: rename title of resource dashboard by @cloudnautique in #5503
- feat: add k8s settings update notification in deployment status by @ryu-man in #5396
- fix: ui: show user's effective role by @g-linville in #5502
- fix: stop passing audit log credentials to composite MCP servers by @thedadams in #5510
- fix: prevent infinite loading when clicking current project in selector by @cloudnautique in #5506
- fix: grant auditors read-only access to API keys by @njhale in #5511
- chore: add Ollama configuration docs by @cloudnautique in #5512
- fix: restrict composite MCP server creation to admins only by @njhale in #5504
- fix: give auditors read-only access to group role assignments by @g-linville in https://github.com/obot-platform/obot/p...
v0.16.0-rc1
What's Changed
- fix: delete button showing incorrectly & incorrect delete call by @ivyjeong13 in #5356
- fix: remove reference of old admin_ui_pid in killing servers by @ivyjeong13 in #5262
- enhance: allow regenerating tool overrides by @njhale in #5358
- chore: adjust nanobot configuration for new auth settings by @thedadams in #5357
- Fix: Don't tag any pre-releases as latest by @cjellick in #5368
- fix: composite mcp servers by @njhale in #5317
- chore: change release workflow to run on depot by @drpebcak in #5369
- fix: show user name instead of user id by @ryu-man in #5344
- fix: adjust when to call update-url endpoint and hide 400 authorization errors when connecting to a server in chat view by @ryu-man in #5341
- fix: ui: providers: support sensitive optional params by @g-linville in #5365
- enhance: better detect host IP by @thedadams in #5366
- docs: add Azure OpenAI docs by @g-linville in #5376
- feat: implement group role assignment by @ryu-man in #5061
- fix: stop erroring when client requests incorrect scopes by @thedadams in #5382
- enhance: add pass-through LLM proxy for responses and anthropic by @thedadams in #5370
- Chore: Allow UI to hit remote API for dev by @cjellick in #5380
- doc: add entra group login restriction instructions by @njhale in #5379
- fix: ensure audit log token hash is correct by @thedadams in #5387
- docs: add okta group login restriction docs by @njhale in #5392
- fix: update access control rules after deletion using
invalidatefunction by @ryu-man in #5391 - fix: use remote shim image for composite runtimes in kubernetes by @thedadams in #5404
- fix: stop running model provider when updating the credential by @thedadams in #5406
- chore: update copyright year to 2026 by @cjellick in #5417
- fix: ui: use the group ID instead of name in group role assignments by @g-linville in #5415
- feat: add API keys by @g-linville in #5389
- feat: introduce model access policies by @njhale in #5393
- fix: improve group assign dialog UI by @ryu-man in #5421
- feat: add UI for API keys by @g-linville in #5407
- fix: format YAML output for resource requests and limits by @ryu-man in #5397
- enhance: dont give admins implicit access to models by @njhale in #5427
- fix: prevent assign group role dialog beign cut off in small screens by @ryu-man in #5440
- fix: restrict export options to admin and owner groups by @ryu-man in #5444
- fix: prevent showing account link on profile page by @ryu-man in #5442
- fix: handle the case when user selects many values by @ryu-man in #5441
- chore: add github workflow to announce releases to discord by @njhale in #5452
- docs: add API keys docs by @g-linville in #5425
- fix: model access policy auditor view and form behavior by @njhale in #5448
- docs: add model access policy docs by @njhale in #5446
- fix: update nanobot hooks definition by @thedadams in #5459
- fix: PUP w/ auditor role not able to create servers by @ivyjeong13 in #5437
- fix: enable restart, details, and logs for remote MCP servers by @njhale in #5470
- docs: model providers: add note about Entra and Microsoft Foundry by @g-linville in #5455
- fix: exclude static assets from rate limiting by @cjellick in #5471
- docs: improve docker deployment auth and port conf by @cjellick in #5474
- fix: dont allow admins to connect to mcp servers they dont have access to by @njhale in #5439
- fix: replace "Connector" words with "MCP Server" for consistency by @ryu-man in #5462
- chore: ui: add key prefix column to API keys table by @g-linville in #5472
- fix: show model name and ID in permission error message by @njhale in #5473
- docs: fix canonical URL issues with trailing slash by @cjellick in #5475
- fix: api keys: access should always be allowed for * by @g-linville in #5479
- fix: default chat model selection by @njhale in #5487
- fix: audit logs: omit empty API key prefixes by @g-linville in #5476
- feat: introduce pair params to enhance Azure Open AI configuration handling by @ryu-man in #5451
- feat: add k8s resource reporting for MCP servers by @cloudnautique in #5485
- fix: use exposed port for connecting to component MCP servers in docker by @thedadams in #5495
- fix: diff showing incorrectly removed/added on new/old versions by @ivyjeong13 in #5492
- fix: add redirects for broken referral links by @cjellick in #5500
- docs: fix one more broken referral link by @cjellick in #5501
- chore: rename title of resource dashboard by @cloudnautique in #5503
- feat: add k8s settings update notification in deployment status by @ryu-man in #5396
- fix: ui: show user's effective role by @g-linville in #5502
- fix: stop passing audit log credentials to composite MCP servers by @thedadams in #5510
- fix: prevent infinite loading when clicking current project in selector by @cloudnautique in #5506
- fix: grant auditors read-only access to API keys by @njhale in #5511
- chore: add Ollama configuration docs by @cloudnautique in #5512
- fix: restrict composite MCP server creation to admins only by @njhale in #5504
- fix: give auditors read-only access to group role assignments by @g-linville in #5513
- fix: stop refresh icon spinning after canceling tool override configuration by @njhale in #5505
- fix: give auditors access to view capacity by @njhale in #5516
- fix: tables no horizontal scroll & filter display columns option by @ivyjeong13 in #5443
- fix: allow getting details and logs for remote MCP servers by @thedadams in #5530
- enhance: ui: show more details about API keys by @g-linville in #5518
- fix: path CVEs by updating Svelte and related dependencies by @ryu-man in #5533
- fix: report correct deployment status for Docker installs by @thedadams in #5534
- fix: remove in handler access checks for mcp-capacity by @njhale in #5540
- enhance: tweak ui for empty API keys page by @ivyjeong13 in #5550
- chore: remove legacy commands by @cjellick in #5554
- fix: redirect for model access policy cancel by @njhale in #5558
- fix: ui: fix delete button for API keys in the details view by @g-linville in #5565
- fix: use backend configuration to determine if redeploy is allowed by @thedadams in #5564
- fix: allow API call for servers that don't need new k8s settings by @thedadams in #5562
- fix: use all query parameter when checking models after provider configuration by @njhale in #5566
- fix: update user hidden fields properly for table columns collapsing by @ivyjeong13 in #5572
- fix: show hea...
v0.15.1
What's Changed
- fix: docs: display versions in correct order by @g-linville in #5349
- fix: cancel correctly redirects for pup mcp-registries by @ivyjeong13 in #5346
- fix: exclude req/resp bodies from audit log log list api by @njhale in #5323
- Oauth enhancements by @thedadams in #5271
- chore: remove deprecated task triggers by @thedadams in #5310
- chore: add CLAUDE.md by @g-linville in #5350
- fix: directly launch remote server when there is no header to configure by @ryu-man in #5335
- fix: improve selecting time range in audit log export by @ryu-man in #5300
- fix: close actions menu after item is clicked and successfully executed by @ryu-man in #5304
- chore: bump nanobot by @g-linville in #5353
Full Changelog: v0.15.0...v0.15.1
v0.15.1-rc1
What's Changed
- fix: docs: display versions in correct order by @g-linville in #5349
- fix: cancel correctly redirects for pup mcp-registries by @ivyjeong13 in #5346
- fix: exclude req/resp bodies from audit log log list api by @njhale in #5323
- Oauth enhancements by @thedadams in #5271
- chore: remove deprecated task triggers by @thedadams in #5310
- chore: add CLAUDE.md by @g-linville in #5350
- fix: directly launch remote server when there is no header to configure by @ryu-man in #5335
- fix: improve selecting time range in audit log export by @ryu-man in #5300
- fix: close actions menu after item is clicked and successfully executed by @ryu-man in #5304
- chore: bump nanobot by @g-linville in #5353
Full Changelog: v0.15.0...v0.15.1-rc1
v0.15.0
We’re excited to announce the v0.15.0 release of the Obot MCP Platform. This is a major release that introduces a significant architectural refactor of the MCP gateway, improved HA support, a UX navigation overhaul, and a broad set of reliability, security, bug fixes, and UX improvements.
Big Updates
Major Gateway Re-Architecture
Obot v0.15.0 completes a large internal refactor of the MCP gateway, transitioning it from an intercepting MCP server into a lightweight reverse-proxy with composable infrastructure.
In this new architecture, the gateway is responsible only for authentication, ensuring MCP servers are available, and proxying requests. Protocol-aware behavior such as authorization checks, audit logging, webhook execution, and OAuth token exchange now runs alongside each MCP server in a dedicated shim container built on Nanobot.
This change dramatically simplifies the gateway core, improves standards alignment, and provides a much more extensible foundation for future features, all without breaking existing MCP server deployments.
You can read the full design story here.
UI and Admin Experience Improvements
This release includes a large UI and UX overhaul that consolidates and simplifies areas of the app related to deploying and using MCP servers:
- “My Connectors”, “Admin Dashboard”, and “MCP Publisher” have been unified. For admins and owners, the experience is largely similar, but for all other roles, the navigation experience will feel similar to an admin's.
- Navigation and configuration flows are clearer and more consistent and adapts based on the users' role
- Many small usability issues around tables, dialogs, filters, and forms have been resolved
Improved High Availability and Scalability
In addition to the scalability improvements from the above re-architecture, we improved the HA posture of the control plane. These changes reduce operational risk and make Obot easier to run reliably in production environments. See the docs for more details.
Branding customizations
Brand customization has also been expanded, allowing admins to configure logos and theme colors for their instance of Obot.
Composite MCP Server Improvements
Composite MCP servers received several important enhancements and fixes:
- Tool previews are now supported for composite servers
- Tool override UX has been significantly improved
- Overrides are preserved correctly during composite upgrades
- Invalid or nested composite configurations are now prevented
- Clearer warnings and UI feedback when composites are blocked or misconfigured
These changes make composites more reliable and easier to reason about, especially in multi-user environments.
Expanded Audit Log Capabilities
Audit logging continues to improve in v0.15.0 with:
- Better export workflows and scheduling UX
- Clearer permission checks and warnings for auditors
- Improved filtering, state handling, and table behavior
These updates make it easier to integrate audit data into external systems and to manage exports at scale.
Upgrade Notes and Known Issues
Update check configuration change
The environment variable controlling update notifications has changed:
- Removed:
OBOT_SERVER_UPDATE_CHECK_INTERVAL_MINS - New:
OBOT_SERVER_DISABLE_UPDATE_CHECK(boolean)
If you previously customized update checks, update your configuration accordingly.
Upgrading from v0.14.0 or earlier with GitHub auth provider
Due to architectural changes in v0.15.0, Obot no longer supports using GitHub organization or team membership to control access to MCP servers.
- GitHub authentication is still supported.
- Login access can still be restricted to specific GitHub orgs or users.
- Access Control Rules based on GitHub groups are no longer supported.
Microsoft Entra upgrade notes
Before upgrading to Obot v0.15.0, you need to add two new application permissions to your app registration in Microsoft Entra:
GroupMember.Read.AllUser.Read.All
Note that these are NOT delegated permissions, like the existing ones, but application permissions, to give Obot itself permission to query for users and groups.
These permissions must be added BEFORE upgrading to v0.15.0.
AFTER upgrading, you may remove the delegated permission for GroupMember.Read.All, as it is no longer needed. Do NOT remove the application permission for GroupMember.Read.All.
See the docs for more details about configuring Microsoft Entra for Obot.
Okta upgrade notes
We recommend watching our video tutorial on migrating your Okta configuration from Obot v0.14.0 to v0.15.0.
Obot v0.15.0 introduces breaking changes to Okta that cannot be addressed until after upgrading. There will be some downtime after upgrading where no users can log in.
When you upgrade, you need to set the environment variable OBOT_SERVER_FORCE_ENABLE_BOOTSTRAP=true. This will allow you to log in as the bootstrap admin user and fix the Okta configuration after upgrading. The token for the bootstrap user can be found in the server logs, or you can override it by setting OBOT_BOOTSTRAP_TOKEN=<value>.
After you have logged in as the bootstrap user, go to the Auth Provider configuration page and modify your configuration for Okta.
You will need to go to your Okta admin panel and configure a new app integration of type API Services. Public/private key must be the authentication method. Provide the Client ID and the Private Key in PEM format to Obot, in the new configuration fields. Grant the okta.groups.read and okta.users.read scopes to this app integration. Also assign an admin role to the application that, at a minimum, contains those two scopes.
Once you have made all of these changes in Okta, and configured these new parameters for Okta in Obot, you can log out of the bootstrap account and sign back in with your normal account. If login succeeds, you can restart Obot with OBOT_SERVER_FORCE_ENABLE_BOOTSTRAP=false (or without that environment variable set at all) to disable bootstrap login.
See the docs for more details about configuring Okta for Obot.
Getting Started
docker run -d --name obot -p 8080:8080 -v /var/run/docker.sock:/var/run/docker.sock \
ghcr.io/obot-platform/obot:latestFor more details, see the documentation:
Changelog
- fix: don't gc component servers when the parent catalog entry is deleted by @njhale in #4966
- chore: add X-Content-Type-Options: nosniff header to API responses by @g-linville in #4973
- chore: use exact match for suggested model name by @tybalex in #4963
- fix: remove update check interval config by @thedadams in #4962
- fix: enhance audit log export form and calendar with view mode by @ryu-man in #4980
- fix: update export entry with running state automatically by @ryu-man in #4978
- fix: disabled Identifiers field & allowing user published mcp server selection in Filters by @ivyjeong13 in #4938
- chore: remove cached cookies for groups; delete GitHub groups by @g-linville in #4905
- Small typo fix by @mikesir87 in #4534
- fix: improve serveHTTP function by @ryu-man in #4994
- Chore: Bump nanobot to fix sse connection issue by @StrongMonkey in #5001
- chore: add engine to /api/version by @g-linville in #5003
- feat: add versioning to docs by @g-linville in #4996
- Chore: delete package-lock.json that contains old packages by @StrongMonkey in #5005
- fix: actually delete tokens for deleted MCP servers by @thedadams in #5013
- feat: add group role assignments by @g-linville in #4778
- fix: disable save button when composite has no mcp servers by @njhale in #5026
- fix: prevent users from creating "nested" composite MCP servers by @njhale in #5025
- fix: add auditor permissions check and warning message in export form by @ryu-man in #4995
- fix: configure multi-user component tools without acr and component search by @njhale in #5050
- enhance: detect docker network for MCP servers by @thedadams in #5051
- fix: block deletion of multi-user servers with dependent composites by @njhale in #5053
- fix: update table fields and filt...