Help us shape the future of Go! Take the 2026 Go Developer Survey

obot

command module
v0.28.0-alpha2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 21, 2026 License: MIT Imports: 7 Imported by: 0

README

Obot

Obot is an open-source platform for organizations to manage, secure, and govern their AI ecosystems. It provides shared infrastructure for connecting AI clients to models and tools, distributing approved MCP servers and skills, managing agent access and credentials, running hosted AI workloads, and recording activity across hosted services and user devices.

Obot does not require an organization to standardize on a single AI client, model provider, or tool ecosystem. Desktop agents and tools such as Claude Code, Codex, Cursor, VS Code, and other IDEs and CLIs can use the parts of the platform that apply to them.

Architecture

Obot Platform architecture

The Obot Platform connects AI activity on user devices with services managed by or proxied through Obot Server.

On user devices, desktop agents and tools connect to Obot gateways, while Obot Sentry scans, audits, and enforces policy on AI activity taking place on the device. The Obot CLI lets users and AI clients discover, install, and manage approved MCP servers and skills.

Obot Server provides:

  • MCP and LLM gateways for controlled access to MCP servers and model providers.
  • Isolated execution for hosted MCP servers and Claude Environments sessions.
  • Platform services for identity and access control, including permissions and secrets.
  • Correlated audit logs of AI activity across the platform.
  • MCP and Skills registries built on curated Git-backed catalogs.

Obot integrates with remote MCP servers, LLM providers, S3-compatible object storage, Git providers, and auth providers.

Core Capabilities

MCP Gateway

The MCP Gateway is a single governed entry point to every MCP server a user is allowed to reach.

  • Expose MCP servers through virtual MCP servers (vMCPs), which combine one or more catalog servers behind a single endpoint, whether those servers are hosted by Obot or run outside it.
  • Reach remote MCP servers on private networks through MCP tunnels, which connect outbound to Obot so no inbound port has to be opened.
  • Pin each vMCP component to a snapshot of its catalog entry, so catalog changes take effect only through an explicit upgrade.
  • Control server and tool access by user or identity-provider group through vMCP profiles.
  • Enable tool search on large vMCPs so clients search for and call tools without loading every tool definition into the model's context.
  • Chat with and call tools on any vMCP you can access using the built-in MCP tester.
  • Manage MCP OAuth, user and shared credentials, and Kubernetes secret bindings.
  • Inspect, reject, or modify MCP requests and responses with MCP, webhook, or built-in credential filters.
LLM Gateway

The LLM Gateway presents provider-compatible endpoints that AI clients use to reach approved models.

  • Connect external AI clients to OpenAI, Anthropic, Amazon Bedrock, Azure, and Generic Responses Compatible providers.
  • Keep provider credentials in Obot instead of distributing them to individual users or clients.
  • Authenticate clients with scoped Obot API keys.
  • Restrict the models visible and callable by each user through Model Access Policies.
  • Record requests and responses, client and session metadata, token usage, and estimated model cost.
Hosted MCP Servers

Obot can run MCP servers itself, in isolated execution environments outside the main Obot Server process.

  • Host npx, uvx, and containerized MCP servers as Docker containers or Kubernetes workloads.
  • Turn any HTTP API with an OpenAPI schema into a hosted MCP server, with one tool per API operation.
  • Apply domain-based egress rules to hosted MCP servers through a configured network-policy provider.
Claude Environments

Claude Environments runs Claude cloud sessions on an organization's own Kubernetes infrastructure. Users keep working in Claude, while Obot controls who can start a session and what that session can reach. Claude Environments is experimental and disabled by default. Support for more agent platforms is planned.

  • Grant access through profiles that map users and groups to vMCPs, CPU and memory limits, and egress rules.
  • Limit session traffic to allowed hosts and inject destination-specific secrets at the egress gateway, so sessions never see them.
  • Scope vMCP credentials to the Obot user mapped to each Claude organization member.
  • Record every egress request in the audit logs.
  • Run isolated sessions and suspend idle workspaces with Agent Substrate.
MCP and Skills Registries

The MCP and Skills Registries centralize the discovery, installation, and management of MCP servers and Agent Skills.

  • Curate MCP and Skills catalogs in Obot or index them from Git-backed repositories.
  • Manage vMCP definitions and OpenAPI-backed servers in Git-backed catalogs alongside other catalog entries.
  • Keep deployed servers running when their entry is removed from a Git-backed catalog.
  • Expose MCP catalogs through the standard MCP Registry API.
  • Publish approved MCP servers and skills to users and AI clients.
  • Control access to individual entries, repositories, or complete catalogs with MCP and skill access policies.
  • Reuse centrally managed Git credentials across MCP and Skills catalog sources.
  • Integrate with GitHub, GitLab, Bitbucket Cloud, and other Git providers.
Obot CLI and Skill

The Obot CLI brings approved MCP servers and skills to users and their local AI clients, and the Obot skill teaches an agent to use the CLI itself.

  • Search for and install approved skills.
  • Search for approved MCP servers.
  • Run and manage skills from the command line.
  • Install the Obot skill so an agent can work with Obot on its own.
Obot Sentry

Obot Sentry extends Obot governance to AI activity occurring directly on user devices. Device Management is currently beta.

  • Enroll devices with the Obot Platform.
  • Inventory installed AI clients, MCP servers, skills, and plugins.
  • Install hooks for Claude Code, Codex, Cursor, Kiro, and VS Code.
  • Record local tool calls alongside activity passing through Obot gateways.
  • Enforce tool-call allowlists for Claude Code, Codex, Cursor, and Kiro on managed devices (experimental).
  • Install manually or deploy through MDMs such as Microsoft Intune.
Identity and Access Control

Obot governs who can reach each part of the platform, and with which credentials.

  • Authenticate users through configured identity providers.
  • Provision users, groups, and group memberships from Okta through SCIM, and deactivate users when they are unassigned.
  • Assign platform roles and permissions.
  • Control access to MCP servers, MCP tools, skills, models, and administrative APIs.
  • Apply policies based on individual users or identity-provider groups.
  • Issue scoped credentials for AI clients and automation.
  • Restrict sensitive audit content to users with the appropriate role.
Audit Logs and Visibility

Obot correlates activity across MCP servers, LLM providers, hosted workloads, and user devices.

  • Record MCP requests and responses.
  • Record LLM Gateway requests, responses, token usage, and model cost.
  • Record local AI-client tool calls captured by Obot Sentry.
  • Record egress requests from Claude Environments sessions.
  • Filter activity by user, server, tool, provider, model, client, device, session, or API key.
  • Track MCP and LLM usage and token spend across users and resources.
  • Export audit data once or on a schedule.

Getting Started

For local development or evaluation, run Obot with Docker:

docker run -d \
  --name obot \
  -p 8080:8080 \
  -v obot-data:/data \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -e OBOT_SERVER_ENABLE_AUTHENTICATION=true \
  -e OBOT_BOOTSTRAP_TOKEN=<token> \
  ghcr.io/obot-platform/obot:latest

The bootstrap token must be at least six characters. If you omit OBOT_BOOTSTRAP_TOKEN, Obot generates one and prints it in the container logs.

Open http://localhost:8080, sign in with the bootstrap token, and configure an authentication provider. For evaluation, the built-in Local provider lets you create user accounts without setting up an external identity provider. A model provider is required only when using the LLM Gateway. The UI is available in English, Japanese, Korean, and Simplified Chinese.

This Docker configuration mounts the host Docker socket so Obot can launch hosted MCP servers as sibling containers. Use it only for development, evaluation, or trusted single-tenant environments. Use the Kubernetes deployment for production or multi-tenant installations.

See the Installation Guide for Kubernetes, external PostgreSQL, encryption, authentication, and production configuration.

Design and architecture

Significant changes begin as Obot Design Proposals so the architecture can be discussed before implementation. Architectural decisions that ship are recorded as concise Architecture Decision Records in this repository.

An ODP captures the proposed design and the discussion that shaped it. An ADR records the durable decision reflected in the implementation.

Documentation and Community

License

Obot is licensed under the MIT License. Every edition, including Obot Community and Obot Enterprise, runs the same open source code from the same container image, and editions differ only in their license key. See Editions and licensing for user and device limits and what each edition includes.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
apiclient module
logger module
pkg
api
auditlog
Package auditlog converts persisted audit rows into the normalized public read model.
Package auditlog converts persisted audit rows into the normalized public read model.
clauderunner
Package clauderunner verifies identities issued to Claude self-hosted sessions.
Package clauderunner verifies identities issued to Claude self-hosted sessions.
cli
cli/internal/mcplogin
Package mcplogin relays one UI OAuth attempt.
Package mcplogin relays one UI OAuth attempt.
controller/handlers/catalogmigration
Package catalogmigration converts standalone legacy MCP resources to vMCPs before controllers and API traffic start.
Package catalogmigration converts standalone legacy MCP resources to vMCPs before controllers and API traffic start.
controller/handlers/modelinfosource
Package modelinfosource removes the models.dev model info source that earlier versions synced model prices from.
Package modelinfosource removes the models.dev model info source that earlier versions synced model prices from.
enforcement
Package enforcement contains the pure decision logic that decides whether a normalized tool call is permitted by an MDMConfiguration's EnforcementAllowlist.
Package enforcement contains the pure decision logic that decides whether a normalized tool call is permitted by an MDMConfiguration's EnforcementAllowlist.
git
groupref
Package groupref finds the objects that reference auth provider groups.
Package groupref finds the objects that reference auth provider groups.
guardrails
Package guardrails checks LLM requests and responses against administrator-defined policies, and MCP traffic with guardrail filters.
Package guardrails checks LLM requests and responses against administrator-defined policies, and MCP traffic with guardrail filters.
i18n
Package i18n renders API-owned messages from the backend translation catalog.
Package i18n renders API-owned messages from the backend translation catalog.
llm
Package llm contains shared types for interacting with language model APIs.
Package llm contains shared types for interacting with language model APIs.
llmengine
Package bifrost embeds the Bifrost AI gateway (github.com/maximhq/bifrost) inside the Obot process and exposes it to the rest of Obot as an http.Handler.
Package bifrost embeds the Bifrost AI gateway (github.com/maximhq/bifrost) inside the Obot process and exposes it to the rest of Obot as an http.Handler.
localauth
Package localauth implements a built-in username/password auth provider.
Package localauth implements a built-in username/password auth provider.
mcp
mcptester
Package mcptester contains the provider-neutral contracts and adapters used by the stateless MCP tester chat endpoint.
Package mcptester contains the provider-neutral contracts and adapters used by the stateless MCP tester chat endpoint.
mdmassets
Package mdmassets loads the MDM assets tree that obot-sentry's build publishes and assembles the per-configuration ZIP an admin downloads.
Package mdmassets loads the MDM assets tree that obot-sentry's build publishes and assembles the per-configuration ZIP an admin downloads.
modeldata
Package modeldata keeps the files the LLM gateway engine prices requests and looks up model capabilities from: a pricing datasheet and a model-parameters file.
Package modeldata keeps the files the LLM gateway engine prices requests and looks up model capabilities from: a pricing datasheet and a model-parameters file.
modeldata/modeldatatest
Package modeldatatest provides model data for tests: a few real entries, converted the way Obot's model data is, so tests that need model prices don't depend on the data a build downloads.
Package modeldatatest provides model data for tests: a few real entries, converted the way Obot's model data is, so tests that need model prices don't depend on the data a build downloads.
openapi
Package openapi imports immutable OpenAPI snapshots for the hosted wrapper.
Package openapi imports immutable OpenAPI snapshots for the hosted wrapper.
principal
Package principal interprets who an authenticated caller is.
Package principal interprets who an authenticated caller is.
scim
Package scim serves a SCIM 2.0 endpoint for an auth provider's SCIM connection, as a facade over Obot's users, identities, groups, and memberships.
Package scim serves a SCIM 2.0 endpoint for an auth provider's SCIM connection, as a facade over Obot's users, identities, groups, and memberships.
scim/adapter
Package adapter holds the provider-specific rules of SCIM connections.
Package adapter holds the provider-specific rules of SCIM connections.
scim/setup
Package setup sets up and administers the SCIM connections of auth providers.
Package setup sets up and administers the SCIM connections of auth providers.
storage/apis/obot.obot.ai/v1
+groupName=obot.obot.ai
+groupName=obot.obot.ai
substrate
Package substrate connects Obot's instance controller to Substrate v0.3.0.
Package substrate connects Obot's instance controller to Substrate v0.3.0.
fetch-model-data command
Command fetch-model-data downloads the LLM gateway's model prices and capabilities into pkg/modeldata/data, for a build to embed.
Command fetch-model-data downloads the LLM gateway's model prices and capabilities into pkg/modeldata/data, for a build to embed.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL