This guide walks you through running Agent Stack in your own self-hosted environment so you can evaluate, develop, and integrate agents as backend services. Agent Stack provides a consistent runtime for agents—handling model access, storage, authentication, and service wiring—so teams can move from agent code to a running service with minimal setup. Agent Stack deploys with Kubernetes via our provided Helm chart, ensuring a standardized setup within your infrastructure. Agent Stack is designed for trusted environments and early-stage integration work. It’s well suited for local development, shared team environments, and internal evaluation. It is not intended to be directly exposed to untrusted public traffic or used as a hardened, multi-tenant production platform today. If you’re evaluating Agent Stack for broader organizational use, deploy it behind your existing network and security boundaries. If you’re an application or agent developer, this guide helps you get agents running in your deployment environment and callable from your application. If you’re part of a platform or IT team, this guide provides a concrete runtime to assess how agent services run inside your infrastructure using our Helm-based deployment, how they integrate with your security and observability tooling, and how they fit your deployment standards. Proceed to the installation guide below to configure your environment and deploy the Agent Stack cluster.Documentation Index
Fetch the complete documentation index at: https://agentstack.beeai.dev/llms.txt
Use this file to discover all available pages before exploring further.
Requirements
Before deployment, ensure your environment meets these specifications:| Category | Requirement |
|---|---|
| Kubernetes | Version 1.24+ with admin access |
| Tooling | Helm 3.8+ and kubectl configured |
| Storage | 20GB+ available for PostgreSQL |
| Providers | API access for LLMs (OpenAI, Anthropic, etc.) |
| Agent Stack CLI | Agent Stack CLI installed for post-deploy config |
Deployment Steps
1. Generate Encryption Key
Agent Stack requires an encryption key for secure data handling. Generate this using Python before creating your configuration file.2. Create Configuration File
Create aconfig.yaml file to define your registry, agents, and security keys. This is a minimal example, more advanced options
are explained in the Configuration Options section.
3. Install the Chart
Deploy the stack to your cluster using Helm.4. Port-Forwarding
By default, ingress is not configured. You can port-forward the service to access the platform. In a separate terminal, run:5. Setup the LLM
After the platform becomes ready, set up your model provider (and login if auth is enabled):6. Test the Deployment
Verify the installation by listing available agents and running a test command:Configuration Options
Authentication & Security Settings
| Option | Description |
|---|---|
| Disabled | No security. Simplest for isolated testing. |
| Basic Auth | Simple username/password (adminPassword). |
| Bundled Keycloak | OIDC using an internal instance of Keycloak. |
| External OIDC | Integration with existing Auth0, Okta, or Enterprise IDPs. |
Disable Authentication
For local testing environments without authentication.Basic Authentication
A straightforward method requiring an admin password for certain endpoints.Bundled Keycloak (Default OIDC)
Use an internal Keycloak instance to handle OIDC and bridge to GitHub, Google, or SAML. Keycloak is deployed automatically whenauth.enabled is true.
External OIDC Provider
Connect your own OIDC provider (e.g., Auth0, Okta, or your own Keycloak) by disabling the bundled Keycloak.Accessing & Configuring Keycloak
- Local Access: kubectl port-forward
svc/agentstack-keycloak 8336:8336-> Access athttp://localhost:8336 - Production Access: Create an Ingress for the
agentstack-keycloakservice. - Setup: Log in (default credentials:
admin/ retrieve from secret). -> navigate to Identity Providers -> add your provider (GitHub, Google, etc.).
Keycloak Architecture & Roles
Keycloak Architecture & Roles
The Agent Stack Keycloak integration is automatically provisioned with the following architecture:Realm:
agentstackClients:agentstack-server: Backend service client (Confidential, Service Accounts enabled).agentstack-ui: Frontend UI client (Confidential, Standard Flow).agentstack-cli: Command Line Interface client (Public, Standard Flow).
agentstack-admin: Full system access.agentstack-developer: Access to agent management.
- Audience mappers are dynamically configured to ensure tokens are valid for the UI and API URLs defined in your config.
Exposing the Platform
To move beyond local port-forwarding, you must expose the following services using Ingress or OpenShift Routes.| Service | Internal Target | Purpose |
|---|---|---|
| UI Endpoint | agentstack-ui-svc | Access to the web interface (includes API proxy). |
| API Endpoint (optional) | agentstack-server-svc | Direct server API access; Required for CLI usage. |
| Auth Endpoint (optional) | agentstack-keycloak | Required for UI and CLI authentication if using Keycloak. |
Configuring External Services & Storage
By default, Agent Stack includes PostgreSQL and SeaweedFS (S3-compatible storage). For production environments, it is highly recommended to use external, managed services.External PostgreSQL
To use an external PostgreSQL instance, disable the built-in subchart and provide connection details. This is required if you prefer a managed database like AWS RDS or Google Cloud SQL. Example configuration:External S3 support
You may want to have Agent Stack connect to an external object storage rather than installing seaweedfs inside your cluster. This chart allows you to specify credentials for an external storage streaming with theexternalS3. You should also disable the seaweedfs installation with the seaweedfs.enabled
option.
Example configuration:
Redis
Redis is used for rate limiting and caching. While disabled by default, it is required if replicaCount > 1 to ensure counters are synchronized across replicas. Enable Built-in Redis:Security and Traffic Control
Rate Limiting
Rate limiting is recommended for production environments as a protection against overloading the platform.Cross-Origin Resource Sharing Configuration
Agent Stack supports Cross-Origin Resource Sharing (CORS) to allow web applications hosted on different domains to interact with the Agent Stack API.cors.enabled: Set totrueto enable CORS. Default isfalse.cors.allowOrigins: A list of origins (e.g.,http://localhost:3000) that are allowed to make cross-site requests to the Agent Stack API.cors.allowMethods: A list of HTTP methods (e.g.,GET,POST) that are allowed for cross-origin requests. Default is["*"].cors.allowHeaders: A list of HTTP request headers (e.g.,Content-Type,Authorization) that can be used when making the actual cross-origin request. Default is["*"].cors.allowCredentials: Set totrueto indicate that the client can send cookies and HTTP authentication credentials with the cross-origin request. Note thatallowOriginscannot be["*"]whenallowCredentialsistrue. Default isfalse.
Agent Management
To manage agents within Agent Stack, you must configure how the platform accesses existing images, how it registers them for use, and how it builds new agents from source code.Configuring Private Access
If your agent images or source code are hosted in private environments, you must provide authentication credentials to allow the cluster to retrieve them.Private Image Registries
When using agents stored in private Docker registries, you must specify the name of a Kubernetescustom-registry-secret. This allows the cluster to pull the images during deployment.
Private GitHub Repositories
For building agents from private or Enterprise GitHub repositories, Agent Stack supports both Personal Access Token (PAT) and GitHub Apps. This configuration enables the build engine to clone your source code.Agent Registration
Once access is configured, you must define which agents are available to the platform. You can do this by listing specific images or by syncing with a remote catalog.Static Agent Registration
Use this method to manually define specific agent images and their unique environment variables.helm upgrade.
External Agent Registry
Instead of manual listing, you can point to a remote registry file. This is ideal for teams managing a large, dynamic catalog of agents.Agent Builds
Agents can be built from a GitHub repository directly in the cluster. To enable this feature, you will need to setup a few things:- Docker image registry credentials with write permissions, see Private image registries
- GitHub credentials to access private or enterprise GitHub repositories (optional)
- External cluster for better security (optional)
Advanced Configuration
The guide above covers the primary configuration paths for production environments. For a comprehensive list of every available parameter, including low-level resource limits, node selectors, and detailed sub-chart settings, refer to the source configuration file. All configuration options, including their default values and technical descriptions, are documented in the values.yaml file within the official repository. If your infrastructure has specific requirements (such as custom sidecars, unique volume mounts, or specific network policies) that are not currently exposed via the Helm chart, please open a GitHub issue to request a new configuration toggle.Operations & Maintenance
Management Commands
Upgrading
Once Agent Stack is running, use these Helm andkubectl commands to manage the lifecycle of your deployment.
| Task | Command |
|---|---|
| Upgrade Platform | helm upgrade --install agentstack -f config.yaml oci://ghcr.io/i-am-bee/agentstack/chart/agentstack:<version> |
| View Active Config | helm get values agentstack |
| Deployment Status | helm status agentstack |
| Resource Health | kubectl get pods , kubectl logs deployment/agentstack-server |
| Uninstall | helm uninstall agentstack |
Troubleshooting
If you encounter issues during or after deployment, use the following commands and checklists to diagnose the problem.Common Issues
Platform not starting:- Redirect URIs: Your Identity Provider must whitelist
https://<your-url>/api/auth/callback. For CLI usage, you must also whitelisthttp://localhost:9001/callback. - CLI Application: Consider creating a separate public OIDC application for the CLI
- Audience Claim: The
audienceclaim in your JWT must match the public URL of your application exactly, with no trailing slash (e.g.,https://example.com). - Proxy Headers: If you are behind a load balancer or ingress,
trustProxyHeaders: true must be enabled in your config to correctly forward request URLs.