Autonomic Logo

autonomic

GitHub Hex.pm HexDocs MIT License

The foundational, implementation-independent BEAM/OTP control plane for the Autonomic Kernel architecture.


What is this package?

autonomic provides the core runtime, authority governor, effect broker, homeostatic regulator, episode lifecycle supervisor, and normative contracts for running untrusted coding workers inside disposable execution domains while keeping durable authority in a trusted control plane.

When should I install it?

Install autonomic if you are:

If you need a turnkey execution stack on Ubuntu/Linux with PostgreSQL and TypeSafe sensors, combine autonomic with:

What does it depend on?

autonomic has zero dependencies on Linux, PostgreSQL, Ecto, or TypeSafeSDK. It depends strictly on standard BEAM utilities:

Installation

Add autonomic to your mix.exs:

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

For the full official stack, the application opts into all three adapters explicitly:

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

This does not make the adapters dependencies of autonomic. The dependency direction is the reverse: each adapter depends on core, and applications choose which adapters to install.

How do I configure it?

Configure the runtime implementations and effect adapters in your config/config.exs:

config :autonomic,
store: Autonomic.Store.Postgres,
domain_backend: Autonomic.Linux.Backend,
sensor: Autonomic.Typesafe.Sensor,
state_dir: "/var/lib/autonomic/kernel",
effect_concurrency: 8,
sensor_queue: 64,
speculation_ms: 15_000,
max_repairs: 3

TypeSafe-centered reference runtime

The core package is adapter-neutral, but the repository's reference semantic path is TypeSafe-centered. With sensor: Autonomic.Typesafe.Sensor, observable worker/effect state is evaluated by a fixed prepared TypeSafe bank and returned as typed Autonomic.SemanticObservation values.

Those observations are not decorative telemetry:

TypeSafe semantic bank
|
+--> Homeostat -> temporal drift/uncertainty/authority/destructive pressure
| -> continue / yield / narrow / preempt
|
`--> EffectBroker -> semantic decision for an exact effect revision
-> allow / deny as one required decision class

The adapter preserves Noul/Score/Choice distributions, confidence, ranking/margins, actual/requested model, request ID, TypeSafeSDK version, bank version, Prepared fingerprint, usage, retries, and latency. Core policy then interprets that evidence conservatively; it does not treat the semantic model as authority.

See TypeSafe Control Loop for the exact core consumption path and current policy limitations.

What public modules and concepts does it own?

How does it fit into Autonomic?

autonomic is the central hub of the dependency graph:

autonomic_linux autonomic_postgres autonomic_typesafe
│ │ │
└──────────────────┼───────────────────┘
┌─────────────────────┐
│ autonomic │
│ │
│ kernel semantics │
│ EffectBroker │
│ episode lifecycle │
│ policy/capability │
│ Store behaviour │
│ Exec behaviour │
│ Sensor behaviour │
└─────────────────────┘

The arrows above are Mix dependency arrows: adapter → core. Runtime calls flow through core behaviours into the configured implementation, but package ownership remains one-way.

Where are the full system docs?

See the repository root at GitHub, HexDocs, and the repository package-composition guide.