Services let you declare network-facing components inDocumentation Index
Fetch the complete documentation index at: https://docs.amika.dev/llms.txt
Use this file to discover all available pages before exploring further.
.amika/config.toml so that sandboxes automatically publish the right ports and generate URLs when they start.
Defining services in config.toml
Add[services.<name>] sections alongside the existing [lifecycle] section. Each section declares a named service with optional port bindings and URL scheme.
Fields
| Field | Type | Required | Description |
|---|---|---|---|
port | integer or "port/protocol" string | no | Single port declaration |
ports | list of integer or "port/protocol" string | no | Multiple port declarations |
url_scheme | string or list of {port, scheme} tables | no | URL generation for specific ports |
port and ports are mutually exclusive. A service may omit both to act as a metadata-only entry with no port bindings.
Port format
Each port value is either:- Integer — interpreted as
containerPort/tcp(TCP is the default protocol). - String
"containerPort/protocol"— sets the protocol explicitly, e.g."4982/udp".
url_scheme
url_scheme controls whether Amika generates a URL for a port after resolution. Allowed scheme values are "http" and "https".
Single-port services accept a string or a list:
url_scheme is omitted, no URLs are generated for the service.
Validation rules
Amika validates service definitions when parsing.amika/config.toml:
- Port range: port numbers must be 1–65535.
- Protocol: must be
tcporudp. - Mutual exclusivity: specifying both
portandportson the same service is an error. - Uniqueness: no duplicate
(containerPort, protocol)pair across all services in the file. - url_scheme entries must reference a port declared in the same service. Duplicate port entries within
url_schemeare rejected.
[lifecycle] section is still applied normally.
Port resolution
When you runamika sandbox create --git and the repository contains service declarations, Amika resolves host ports for each service port:
- Direct mirror — try binding
hostPort = containerPort. If the port is available on the host, use it. - Random fallback — if the direct mirror is taken, bind to port 0 and let the OS assign an available port.
127.0.0.1 (same as --port-host-ip).
For ports with a url_scheme, Amika generates a URL at resolution time:
amika sandbox list and API responses.
URL generation only applies to TCP ports. UDP ports with a
url_scheme do not produce runtime URLs.Merging with —port flags
When--port flags are passed alongside --git, the two sets of port bindings are combined:
--port flags and a service declaration, Amika returns an error — there is no silent override.
Listing services
Useamika service list to see services across all sandboxes:
| Flag | Default | Description |
|---|---|---|
--sandbox-name <name> | (none) | Filter services to a specific sandbox |
SERVICE, SANDBOX, PORTS, URL.
Services on the hosted platform
On the hosted Amika platform, service definitions can also be managed through the web UI or the platform API. Resolution precedence — when creating a sandbox for a repository, the platform resolves service definitions in this order:- Database — if any service definitions have been saved via the UI or API, use those exclusively.
- Repository config — if no database definitions exist, parse
[services.*]sections from.amika/config.toml. - Default — if neither source defines services, proceed with no service definitions.
Related docs
- Sandbox configuration — lifecycle scripts, git cloning, reserved ports
- CLI reference — full command and flag index