Docs

Behavior & Limits

Guarantees

Resident workload. A daemon is started and kept running by the platform controller. On Local it runs as a supervised local runtime process. On Kubernetes it runs as a DaemonSet. On AWS, GCP, and Azure it runs one instance on every machine in the selected Alien Machines cluster.

No request-response API. Daemon has no invocation API, timeout, or trigger model. Public endpoints are optional HTTP routing surfaces, not invocation semantics.

Command-capable when enabled. If commandsEnabled is true, Alien injects the command-receiver environment. The daemon application must start its own pull receiver (createCommandReceiver or alien_commands::Receiver) to lease commands addressed to that Daemon over outbound HTTPS and execute registered handlers. No runtime, sidecar, or Operator starts the receiver for it.

Cloud controllers. AWS, GCP, and Azure daemon resources run on the managed compute plane, can request host runtime settings, and can attach managed HTTP endpoints.

Limits

LimitValueNotes
Supported platformsAWS, GCP, Azure, Local, KubernetesController behavior is platform-specific.
SchedulingOne per eligible machine or nodeKubernetes uses a DaemonSet. On AWS, GCP, and Azure, Alien Machines runs one instance on each machine in the cluster.
Public endpointsHTTP onlyAdd named endpoints explicitly.
TriggersNot supportedUse Worker for queue, storage, schedule, or HTTP-triggered work.
Direct invocationNot supportedUse Worker for request-response calls.
CommandsDisabled by defaultEnable explicitly with .commandsEnabled(true).

Platform Notes

Local

  • The controller extracts the daemon container image, starts it through the local runtime manager, and checks health every 5 seconds while ready.
  • Linked resource bindings and standard Alien environment variables are injected into the process environment.
  • Delete stops and removes the local daemon process state.

Kubernetes / On-Prem

  • The controller creates a Kubernetes DaemonSet.
  • The pod restart policy is Always.
  • Linked resource bindings are injected as environment variables. Secret values are moved into Kubernetes Secrets where the binding extraction code supports it.
  • The build pipeline converts source-based Daemons to runnable images before the controller sees them.

AWS, GCP, Azure

  • Daemons run on the managed compute plane, with one instance on every machine in the Alien Machines cluster.
  • A cloud daemon must specify a .cluster(...) so Alien knows which ComputeCluster should run it.
  • Public endpoints use provider load balancing and managed DNS when configured.
  • Omit public endpoints for private background processes.
  • Host runtime settings are passed through to the managed runtime for trusted loaders and node agents.
  • Managed clustered daemons receive generic topology hints in ALIEN_DAEMON_PRIVATE_ADDRESS, ALIEN_DAEMON_PEER_PRIVATE_ADDRESSES, and ALIEN_DAEMON_NODE_COUNT. Treat these as application-level hints; Alien owns the underlying private network implementation.

Design Decisions

Daemon is process supervision, not a scalable service abstraction. It has no triggers, scaling, or storage model. Use Container when you need replica controls, persistent storage, or multiple service ports.

Commands are opt-in. A daemon without command handlers should leave .commandsEnabled(false) and should not start a receiver. Enabling commands injects configuration; it does not start polling on the application's behalf.

On this page