airlock

package module
v0.4.0 Latest Latest
Warning

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

Go to latest
Published: Jul 25, 2026 License: AGPL-3.0 Imports: 0 Imported by: 0

README

Airlock

Airlock demo

Airlock is a self-hosted platform for creating and deploying AI-native apps. Build an app in Go or prompt one into existence, then run it with web UI, AI chat, APIs, authentication, storage, integrations, logs, and its own subdomain on infrastructure you control.

Installation

Follow the installation guide or run the pinned installer:

curl -fsSL https://raw.githubusercontent.com/airlockrun/airlock/v0.4.0/install.sh | bash

To inspect the installer first:

git clone https://github.com/airlockrun/airlock.git
cd airlock
git checkout v0.4.0
less install.sh
./install.sh

Development

Development requires Go 1.26+, Docker with Compose v2, and pnpm. Start from the development environment preset:

cp .env.dev.example .env
cd frontend && pnpm install && cd ..
make dev

make dev starts the bundled infrastructure and ingress services, watches the frontend, and runs the Airlock server from source. Set AGENT_LIBS_PATH in .env to build apps against local agentsdk, goai, and sol source.

See CONTRIBUTING.md for contribution guidelines and AGENTS.md for repository architecture and development rules.

Companion projects

  • agentsdk - Go SDK and CLI for Airlock apps
  • goai - Go toolkit for building AI-powered applications
  • sol - agent runtime and coding harness

License

AGPL-3.0. The community edition is fully usable when self-hosted. Some operational features, including SSO/OIDC and audit-log export, are available under a commercial license. Contact hello@airlock.run for commercial licensing.

The companion libraries are licensed under Apache-2.0.

Security

Report vulnerabilities to security@airlock.run. Do not open a public issue for security reports.

Documentation

Index

Constants

View Source
const Version = "0.4.0"

Version is the airlock release version. The release tag in git is "v"+Version (e.g. "v0.3.4"). Bumped manually before tagging; check-versions.sh enforces that this constant, the docker-compose.yml ghcr tags, and the README install step all agree.

Consumed at the module level so the default AGENT_BUILDER_IMAGE / AGENT_BASE_IMAGE in config tracks airlock's own version — drift between airlock and its matched toolserver/runtime images becomes a build-time error.

Variables

This section is empty.

Functions

This section is empty.

Types

This section is empty.

Directories

Path Synopsis
Package apihelpers carries the low-level HTTP/db utility functions shared by airlock's two HTTP surfaces:
Package apihelpers carries the low-level HTTP/db utility functions shared by airlock's two HTTP surfaces:
Package apitest is the integration test harness for the airlock API.
Package apitest is the integration test harness for the airlock API.
Package apperr holds the cross-cutting sentinel errors, their detail-wrapper, and the HTTP status mapping.
Package apperr holds the cross-cutting sentinel errors, their detail-wrapper, and the HTTP status mapping.
Package attachref resolves S3-backed attachment references (`s3ref:K`) emitted by agentsdk.attachToContext into storage-ready or LLM-ready forms.
Package attachref resolves S3-backed attachment references (`s3ref:K`) emitted by agentsdk.attachToContext into storage-ready or LLM-ready forms.
Package audio centralises audio-format conversion so every transcription entry point (bridge voice notes, agent-invoked /api/agent/llm/transcribe) normalises to a format every STT model accepts.
Package audio centralises audio-format conversion so every transcription entry point (bridge voice notes, agent-invoked /api/agent/llm/transcribe) normalises to a format every STT model accepts.
lockout
Package lockout implements per-(email, ip) login throttling for the airlock auth path.
Package lockout implements per-(email, ip) login throttling for the airlock auth path.
passkey
Package passkey wraps go-webauthn for airlock's human login.
Package passkey wraps go-webauthn for airlock's human login.
Package authz is the single authorization layer every surface gates through.
Package authz is the single authorization layer every surface gates through.
Package builder implements the agent build and upgrade pipeline.
Package builder implements the agent build and upgrade pipeline.
cmd
airlock command
airlockvet command
airlockvet runs the project-specific static checks for the airlock codebase.
airlockvet runs the project-specific static checks for the airlock codebase.
Package compat verifies that agent containers and this airlock process were built against compatible agentsdk versions.
Package compat verifies that agent containers and this airlock process were built against compatible agentsdk versions.
Package container provides container lifecycle management for agents.
Package container provides container lifecycle management for agents.
Package convert provides dbq→proto conversion functions shared by api and realtime packages.
Package convert provides dbq→proto conversion functions shared by api and realtime packages.
Package crypto provides AES-256-GCM encryption with versioned keys for rotation.
Package crypto provides AES-256-GCM encryption with versioned keys for rotation.
db
dbq
dbtest
Package dbtest provisions a database for integration tests.
Package dbtest provisions a database for integration tests.
Package execproxy implements the airlock-side SSH execution path for agentsdk.RegisterExecEndpoint.
Package execproxy implements the airlock-side SSH execution path for agentsdk.RegisterExecEndpoint.
gen
Package llmledger is the single writer for the llm_usage ledger — the authoritative record of every LLM token/cost charge in Airlock.
Package llmledger is the single writer for the llm_usage ledger — the authoritative record of every LLM token/cost charge in Airlock.
Package modelresolve holds the pure capability→model resolution shared by the runtime LLM proxy (agentapi.resolveModel) and the model-config display (service/models).
Package modelresolve holds the pure capability→model resolution shared by the runtime LLM proxy (agentapi.resolveModel) and the model-config display (service/models).
Package networkpolicy provides the outbound HTTP transport used for user-configured destinations.
Package networkpolicy provides the outbound HTTP transport used for user-configured destinations.
Package oauth provides OAuth 2.0 PKCE support for Airlock credential management.
Package oauth provides OAuth 2.0 PKCE support for Airlock credential management.
Package secrets provides a forward-compatible interface for secret storage.
Package secrets provides a forward-compatible interface for secret storage.
Package service holds the per-domain business-logic layer that sits between HTTP handlers and the database.
Package service holds the per-domain business-logic layer that sits between HTTP handlers and the database.
agents
Package agents owns the agent-lifecycle business logic: create, configure, build/upgrade/rollback, start/stop/suspend, list/get detail, and the per-agent git-remote bindings.
Package agents owns the agent-lifecycle business logic: create, configure, build/upgrade/rollback, start/stop/suspend, list/get detail, and the per-agent git-remote bindings.
agentstorage
Package agentstorage owns authorization and canonical resolution for paths supplied through user, run, and MCP surfaces.
Package agentstorage owns authorization and canonical resolution for paths supplied through user, run, and MCP surfaces.
bridges
Package bridges owns the chat-platform-integration lifecycle: create / list / update / delete a bridge row plus the corresponding poller goroutine and per-bridge driver state.
Package bridges owns the chat-platform-integration lifecycle: create / list / update / delete a bridge row plus the corresponding poller goroutine and per-bridge driver state.
catalog
Package catalog owns the read-only provider/model catalog and the per-provider capability matrix the Settings UI renders.
Package catalog owns the read-only provider/model catalog and the per-provider capability matrix the Settings UI renders.
connections
Package connections owns reusable connection and MCP credentials, their need-aware OAuth lifecycle, agent env vars, and aggregate setup status.
Package connections owns reusable connection and MCP credentials, their need-aware OAuth lifecycle, agent env vars, and aggregate setup status.
conversations
Package conversations owns the read/list/delete + topic-subscription lifecycle of web conversation threads.
Package conversations owns the read/list/delete + topic-subscription lifecycle of web conversation threads.
execendpoints
Package execendpoints owns the operator-facing CRUD + test of per-agent SSH exec endpoints (declared by the agent via RegisterExecEndpoint, configured by the operator here).
Package execendpoints owns the operator-facing CRUD + test of per-agent SSH exec endpoints (declared by the agent via RegisterExecEndpoint, configured by the operator here).
gitcredentials
Package gitcredentials owns the per-user git PAT credential surface (list / create / delete).
Package gitcredentials owns the per-user git PAT credential surface (list / create / delete).
grants
Package grants owns model entitlements ((provider, model) -> principal).
Package grants owns model entitlements ((provider, model) -> principal).
identity
Package identity owns the per-user mapping from airlock users to external chat-platform user IDs (telegram).
Package identity owns the per-user mapping from airlock users to external chat-platform user IDs (telegram).
integrations
Package integrations provides authenticated development-time access to an agent's bound connections, exec endpoints, and MCP servers.
Package integrations provides authenticated development-time access to an agent's bound connections, exec endpoints, and MCP servers.
managedbots
Package managedbots owns the Telegram Bot API "Managed Bots" create-flow's session correlation: airlock UI button → manager-bot deep link → user creates a bot in Telegram → the manager bridge's poll loop receives ManagedBotCreated → bridge row inserted.
Package managedbots owns the Telegram Bot API "Managed Bots" create-flow's session correlation: airlock UI button → manager-bot deep link → user creates a bot in Telegram → the manager bridge's poll loop receives ManagedBotCreated → bridge row inserted.
members
Package members owns add/list/remove of agent_grants rows — the per-agent sharing list.
Package members owns add/list/remove of agent_grants rows — the per-agent sharing list.
models
Package models owns the per-agent model configuration: the eight capability overrides (build/exec/stt/vision/tts/image_gen/embedding/ search), each a (provider FK, bare model name) pair, plus the declared model slots and their per-slot assignments.
Package models owns the per-agent model configuration: the eight capability overrides (build/exec/stt/vision/tts/image_gen/embedding/ search), each a (provider FK, bare model name) pair, plus the declared model slots and their per-slot assignments.
needs
Package needs owns the agent-need → resource lifecycle for the sluggable resource types (connection, mcp_server, exec_endpoint): instantiating a resource from a need's declared shape, binding an existing resource to a need, and listing the resources that could satisfy a need.
Package needs owns the agent-need → resource lifecycle for the sluggable resource types (connection, mcp_server, exec_endpoint): instantiating a resource from a need's declared shape, binding an existing resource to a need, and listing the resources that could satisfy a need.
passkeys
Package passkeys owns the per-user WebAuthn surface: registering, listing, renaming, and deleting the caller's own passkeys, plus setting and removing the caller's password.
Package passkeys owns the per-user WebAuthn surface: registering, listing, renaming, and deleting the caller's own passkeys, plus setting and removing the caller's password.
providers
Package providers owns the tenant-wide LLM provider catalog: rows in the providers table, their encrypted API keys, and the lifecycle (create / list / update / delete).
Package providers owns the tenant-wide LLM provider catalog: rows in the providers table, their encrypted API keys, and the lifecycle (create / list / update / delete).
resources
Package resources owns the per-user inventory and management surface for reusable connections, MCP servers, and exec endpoints.
Package resources owns the per-user inventory and management surface for reusable connections, MCP servers, and exec endpoints.
runs
Package runs owns the list / get / log / cancel operations for the runs table.
Package runs owns the list / get / log / cancel operations for the runs table.
settings
Package settings owns the single-row system_settings table: the tenant-wide default (provider FK, bare model name) pairs the agent-create flow prefills from.
Package settings owns the single-row system_settings table: the tenant-wide default (provider FK, bare model name) pairs the agent-create flow prefills from.
siblings
Package siblings is the per-agent "address book" of other agents a parent agent's LLM may reach via A2A MCP.
Package siblings is the per-agent "address book" of other agents a parent agent's LLM may reach via A2A MCP.
usage
Package usage serves read-only rollups over the llm_usage spend ledger for the admin Usage view: a window summary plus per-agent and per-model breakdowns.
Package usage serves read-only rollups over the llm_usage spend ledger for the admin Usage view: a window summary plus per-agent and per-model breakdowns.
users
Package users owns the tenant-wide user directory: reads (List / ListDetail / Get / Lookup) at TenantUserView, self-service display-name updates at TenantSelfProfileUpdate, and admin mutators (Create / UpdateRole / Delete) at TenantUserManage.
Package users owns the tenant-wide user directory: reads (List / ListDetail / Get / Lookup) at TenantUserView, self-service display-name updates at TenantSelfProfileUpdate, and admin mutators (Create / UpdateRole / Delete) at TenantUserManage.
Package sysagent is the in-airlock chat agent that lets operators manage agents, bridges, connections, members, A2A, runs, and (later) other tenant resources through tool calls.
Package sysagent is the in-airlock chat agent that lets operators manage agents, bridges, connections, members, A2A, runs, and (later) other tenant resources through tool calls.
agentview
Package agentview projects the public API protos down to a compact, LLM-friendly shape for the system agent's tool outputs.
Package agentview projects the public API protos down to a compact, LLM-friendly shape for the system agent's tool outputs.
Package trigger provides services that trigger agent containers in response to external events: webhooks, cron schedules, and channel messages.
Package trigger provides services that trigger agent containers in response to external events: webhooks, cron schedules, and channel messages.
tgwebapp
Package tgwebapp verifies Telegram Web App initData payloads.
Package tgwebapp verifies Telegram Web App initData payloads.

Jump to

Keyboard shortcuts

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