Hosting AgentLogs
AgentLogs server is available in two production-ready formats:- Official Docker image:
ghcr.io/agentlogs/agentlogs - Official standalone binary:
agentlogs-serverfor Linux, macOS, and Windows
You must configure at least one OAuth provider. AgentLogs currently supports GitHub and GitLab login.
Deploy
Docker
Pull and run the official image:Mount
/app/.data to persist both SQLite data and uploaded transcript blobs.Standalone Binary
Download a matching binary from the GitHub Releases page (server-vX.Y.Z tags), then run:
- By default, the binary runs embedded migrations, then starts the server
--no-migrationsskips startup migrations--only-migrationsruns migrations and exits
Environment Variables
Before you deploy, make sure you have:BETTER_AUTH_SECRETWEB_URLset to your public hostname in production- GitHub login:
GITHUB_CLIENT_IDandGITHUB_CLIENT_SECRET, or GitLab login:GITLAB_CLIENT_IDandGITLAB_CLIENT_SECRET GITLAB_ISSUERif you use self-managed GitLab- An AI summary backend if you want transcript titles generated automatically
Authentication
| Variable | Default | Notes |
|---|---|---|
BETTER_AUTH_SECRET | unset | Required. Generate with openssl rand -base64 32. Used to sign auth state and sessions. |
WEB_URL | http://localhost:3000 | Public base URL of your app. Used for OAuth callbacks, auth origins, and browser redirects. Set this to your real public hostname in production. |
WAITLIST_ENABLED | true | When enabled, new users default to the waitlist role. Set it to false to make new
users regular users immediately. |
OAuth Providers
At least one provider must be configured. If both GitHub and GitLab are configured, AgentLogs currently prefers GitHub for provider-agnostic login redirects such as browser login and device authorization.GitHub
| Variable | Default | Notes |
|---|---|---|
GITHUB_CLIENT_ID | unset | Required if GitHub login is enabled. GitHub OAuth app client ID. |
GITHUB_CLIENT_SECRET | unset | Required if GitHub login is enabled. GitHub OAuth app client secret. |
GitLab
| Variable | Default | Notes |
|---|---|---|
GITLAB_CLIENT_ID | unset | Required if GitLab login is enabled. GitLab OAuth/OIDC app client ID. |
GITLAB_CLIENT_SECRET | unset | Required if GitLab login is enabled. GitLab OAuth/OIDC app client secret. |
GITLAB_ISSUER | https://gitlab.com | Set this to your self-managed GitLab instance URL when not using gitlab.com. |
Storage
| Variable | Default | Notes |
|---|---|---|
DB_LOCAL_PATH | .data/db.sqlite | SQLite database path. |
STORAGE_DIR | .data/storage | Local blob storage directory for uploaded transcript assets. |
| Variable | Default | Notes |
|---|---|---|
RESEND_API_KEY | unset | Enables transactional email delivery. |
EMAIL_SENDER | Philipp from AgentLogs <philipp@agentlogs.ai> | Overrides the default transactional sender. |
AI Features
AgentLogs can generate short transcript titles during ingest. You can configure one of two backends:AI_BASE_URLandAI_MODELfor any OpenAI-compatible endpoint such as Ollama, vLLM, or LiteLLMOPENROUTER_API_KEYfor the default hosted path through OpenRouter
AI_BASE_URL and AI_MODEL are set, AgentLogs prefers the OpenAI-compatible endpoint. If no AI backend is configured, summary generation falls back to a generic placeholder title.
| Variable | Default | Notes |
|---|---|---|
OPENROUTER_API_KEY | unset | Enables AI-generated summaries through OpenRouter when no custom AI endpoint is configured. |
AI_BASE_URL | unset | Base URL for an OpenAI-compatible API. Typical values end in /v1. |
AI_MODEL | unset | Required with AI_BASE_URL. Model identifier sent to the compatible endpoint. |
AI_API_KEY | unset | Optional API key for the compatible endpoint. Leave blank for local providers that do not require auth. |
OpenAI-compatible endpoints
Use these variables when you want AgentLogs to keep summary generation inside your own infrastructure:- For Docker deployments that call an Ollama server running on the host, use
http://host.docker.internal:11434/v1 - For gateways like LiteLLM or vLLM, set
AI_MODELto the model name that gateway exposes
OpenRouter
Use OpenRouter when you want a hosted default without running your own model server:Runtime
| Variable | Default | Notes |
|---|---|---|
HOST | 0.0.0.0 | HTTP bind host for the standalone server runtime. |
PORT | 3000 | HTTP port for the standalone server runtime. |
Configure Authentication Providers
GitHub OAuth App
Create an OAuth app at github.com/settings/developers:- Homepage URL:
${WEB_URL} - Authorization callback URL:
${WEB_URL}/api/auth/callback/github
- Homepage:
https://logs.example.com - Callback:
https://logs.example.com/api/auth/callback/github
GitLab OAuth / OIDC App
Create an OAuth application in your GitLab instance:- Redirect URI:
${WEB_URL}/api/auth/oauth2/callback/gitlab - Scopes:
openid,profile,email
- Issuer:
https://gitlab.com - Redirect URI:
https://logs.example.com/api/auth/oauth2/callback/gitlab
GITLAB_ISSUER to your instance base URL, for example https://gitlab.company.internal.
Connect Your CLI And Plugins
Authenticate your CLI against your host:https:// so your local CLI and plugins upload to your own instance.
Upgrade
When upgrading, deploy a newer image or binary and start it again:- Docker: restart the container with the new tag; embedded migrations run on startup by default
- Binary: replace the binary and run
./agentlogs-server