Autonomic Linux Logo

autonomic_linux

GitHub Hex.pm HexDocs MIT License

Linux isolation and execution-domain backend for the Autonomic Kernel.


What is this package?

autonomic_linux implements the Autonomic.ExecutionDomain behaviour for Linux. It manages disposable execution domains using user/mount/PID/network namespaces, cgroup v2 resource limits, overlayfs filesystems, and seccomp filters via an external native launcher daemon.

When should I install it?

Install autonomic_linux when deploying the Autonomic Kernel on Linux hosts to run untrusted coding workers inside bounded, disposable sandboxes.

What does it depend on?

  • autonomic (~> 0.1.0)
  • Host Linux environment with cgroup v2, overlayfs, user namespaces, and seccomp.
  • Rust / Cargo (for compiling the included native/autonomic_launcher executable from source).

Installation

Add autonomic_linux to your mix.exs:

def deps do
  [
    {:autonomic, "~> 0.1.0"},
    {:autonomic_linux, "~> 0.1.0"}
  ]
end

autonomic_linux is opt-in from the application's point of view, but its Mix dependency is autonomic_linux → autonomic. Installing this package does not make autonomic depend on it; an application chooses this adapter by adding the package and configuring the corresponding core behaviour.

How do I configure it?

In your config/config.exs or config/runtime.exs:

config :autonomic,
  domain_backend: Autonomic.Linux.Backend

config :autonomic_linux,
  enabled: true,
  executable: "/usr/local/libexec/autonomic_launcher",
  rootfs: "/opt/autonomic/rootfs",
  state_root: "/var/lib/autonomic",
  sudo: true

Security boundary: what this package is and is not

The current backend is host-local shared-kernel Linux containment. The BEAM control plane, TypeSafe client, native launcher, and contained worker are on the same physical/virtual Linux host. The worker is isolated with namespaces, cgroup v2, OverlayFS/chroot boundaries, and seccomp, but this package is not a microVM backend or a remote execution fleet.

TypeSafe runs on the trusted control-plane side. The worker does not need the TypeSafe SDK or API key; observable worker activity is turned into bounded/redacted observation frames and evaluated outside the sandbox.

For a precise threat statement and the future remote/hardware-backed execution shape, see Trust Boundary, TypeSafe, and the Execution Plane.

What public modules and concepts does it own?

How does it fit into Autonomic?

autonomic_linux is an optional adapter implementing execution containment:

       autonomic_linux                      other backends
              │                                     │
              └──────────────────┬──────────────────┘
                                 ▼
                      ┌─────────────────────┐
                      │      autonomic      │
                      └─────────────────────┘

The arrows are dependency arrows: concrete adapters depend on the core contracts. The application chooses which implementation to configure at runtime.

Where are the full system docs?

See the repository root at GitHub and HexDocs.