Skip to content
Conduit

skill

actonos

ActonOS is a single-purpose appliance operating system engineered as a customizable, self-governing AI agent kernel running 24/7.

actonos/actonoscommunitylistedunreviewednot running here yet

Set up

Skills are installed by placing their folder where your agent loads skills.

Install instructions come from the README

Skills do not use an MCP config. Follow the steps in the README below; one-click install arrives with accounts.

README

synced Oct 17, 2026

ActonOS

Extensible AI Agent Operating System Kernel

Go Version React License Version

A single-purpose appliance OS designed as a customizable, self-governing agent kernel that runs 24/7. ActonOS keeps its core daemon (actond) statically linked and packages local ONNX inference as a loopback-only helper for bare-metal MiniPCs and Docker containers.

Architecture · Development · Deployment · API Reference · Contributing


Key Features

FeatureDescription
Static Core DaemonThe core system compiles into one actond binary (CGO_ENABLED=0); local ONNX inference runs in a separately packaged loopback helper.
Universal Agent EngineCreate unlimited AI agents with custom personas, system prompts, tool bindings, LLM models, and delegation scopes.
Multi-Agent SwarmAgent-to-Agent delegation via Goroutines. Orchestration agents decompose tasks and dispatch to specialized sub-agents.
WasmLoader Plugin EngineSandboxed WebAssembly runtime (Wazero pure Go) running Tools, Messaging Channels, and SaaS Connectors with strict egress firewalls and AES-256-GCM vault brokering (not DMI/CPU bound).
Dynamic Tooling HubHot-load MCP servers, WASM plugins, and Skill-as-a-Folder scripts at runtime — no restarts needed.
Dual-Runtime HALAutomatic environment detection: bare-metal (D-Bus, Wi-Fi Hotspot, Bubblewrap sandbox) or Docker (container metrics, jailed exec).
Hybrid Memory (RAG)SQLite FTS5 + Chromem-go vectors generated locally by pinned multilingual-e5-small ONNX, with a durable one-minute debounce queue.
Enterprise AuthOAuth 2.1 PKCE (S256), Dynamic Client Registration, background token refresh daemon.
Immutable OS DesignUser data under /data. Atomic OTA symlink swap with persisted previous/active state and systemd restart.
Zero-Config OnboardingCaptive portal Wi-Fi setup, API key entry, Tailscale mesh VPN.
Embedded TailscaleNative tsnet integration for end-to-end encrypted remote access without port forwarding.

Architecture Overview

graph TB
    subgraph "Layer 1 — Connectivity & Ingress"
        TSNET["Tailscale tsnet<br/>E2E Mesh VPN"]
        WEBUI["Web UI SPA<br/>React 19 + Tailwind v4"]
        CHANNELS["WASM Channel Adapters<br/>Discord · Zalo · plugin SDK"]
        PORTAL["Zero-Config Portal<br/>Captive DNS @ 192.168.4.1"]
    end

    subgraph "Layer 2 — Agent Framework"
        CONFIGURATOR["Universal Agent<br/>Configurator"]
        SWARM["Swarm Orchestrator<br/>Goroutine Delegation"]
        DELEGATION["Zero-Trust<br/>Scope Delegation"]
    end

    subgraph "Layer 3 — Auth & Integrations"
        OAUTH["OAuth 2.1 Engine<br/>PKCE S256 + DCR"]
        REFRESH["Token Refresh<br/>Daemon"]
        CONNECTORS["WASM SaaS Connectors<br/>GitHub · Notion · Linear · Custom"]
    end

    subgraph "Layer 4 — Dynamic Tooling & Extensions"
        MCP["MCP Host Engine<br/>stdio / SSE"]
        WASM["WasmLoader (Wazero JIT)<br/>Tools · Channels · Connectors"]
        SKILLS["Skill-as-a-Folder<br/>fsnotify hot-reload"]
    end

    subgraph "Layer 5 — Acton Daemon Core"
        BUS["Unified Event Bus"]
        REACT_LOOP["ReAct Orchestrator"]
        CASCADE["Model Cascade Router"]
        MEMORY["Hybrid Memory Engine<br/>FTS5 + Vector + Ebbinghaus"]
        VAULT["Encrypted Vault<br/>AES-256-GCM"]
    end

    subgraph "Layer 6 — HAL"
        BARE["Bare-metal Mode<br/>NetworkManager · bwrap · Cgroups v2"]
        DOCKER["Docker Mode<br/>Container Metrics · Jailed Exec"]
    end

    subgraph "Layer 7 — Base OS"
        DEBIAN["Debian 12 Minimal"]
        ALPINE["Alpine Linux"]
    end

    WEBUI --> CONFIGURATOR
    CHANNELS --> BUS
    TSNET --> WEBUI
    PORTAL --> WEBUI
    CONFIGURATOR --> SWARM
    SWARM --> DELEGATION
    DELEGATION --> OAUTH
    OAUTH --> REFRESH
    REFRESH --> CONNECTORS
    CONFIGURATOR --> MCP
    CONFIGURATOR --> WASM
    CONFIGURATOR --> SKILLS
    MCP --> BUS
    WASM --> BUS
    SKILLS --> BUS
    BUS --> REACT_LOOP
    REACT_LOOP --> CASCADE
    REACT_LOOP --> MEMORY
    CASCADE --> VAULT
    MEMORY --> VAULT
    BARE --> DEBIAN
    DOCKER --> ALPINE
    BUS --> BARE
    BUS --> DOCKER

Quick Start

Docker (Recommended)

docker run -d \
  --name actonos \
  -p 8080:8080 \
  -v ./acton-data:/data \
  -e RUNTIME_MODE=docker \
  --restart unless-stopped \
  actonos/actonos:latest

Open http://localhost:8080 to access the dashboard.

Bare-metal MiniPC

  1. Download the latest ActonOS-vX.Y.Z.iso from Releases
  2. Flash to USB: dd if=ActonOS-v1.0.0.iso of=/dev/sdX bs=4M status=progress
  3. Boot the MiniPC from USB — installation is fully automated
  4. Open the Web UI on the LAN (or Tailscale) and complete the setup wizard

Development

Prerequisites

ToolVersionPurpose
Go1.26+Backend daemon
Node.js22 LTS+Frontend build
Make4.0+Build orchestration
Docker24+Container builds (optional)

Getting Started

# Clone the repository
git clone https://github.com/actonos/actonos.git
cd actonos

# Install dependencies
make deps

# Run in development mode (backend + frontend hot-reload)
make dev

# Run tests
make test

# Build production binary
make build

See docs/DEVELOPMENT.md for the full A-Z development guide.

Project Structure

actonos/
├── cmd/actond/              # Binary entrypoint (auto-detects bare-metal vs Docker)
├── cmd/embeddingd/          # Loopback multilingual-e5-small ONNX helper
├── internal/
│   ├── agent/               # AI Agent Engine, Swarm, Planner, Verifier, Memory Reflection
│   ├── auth/                # OAuth 2.1 PKCE, Token Refresh, Delegation Manager
│   ├── bus/                 # Event-Driven Pub/Sub Channel Router
│   ├── channels/            # Message routing, session state, pairing manager, account sync
│   ├── plugin/              # WasmLoader runtime (Wazero), host syscalls, tool/channel/connector bridges
│   ├── llm/                 # LLM Provider Interface & Cascade Router
│   ├── tools/               # MCP Host, WASM Runner, Skill Watcher, Native Tools
│   ├── sandbox/             # Bubblewrap (bare-metal) & Subshell (Docker) executors
│   ├── memory/              # Durable embedding queue, SQLite FTS5, Chromem, decay, Vault
│   ├── system/              # HAL, Tailscale tsnet, OTA, Hardware Metrics
│   └── server/              # HTTP Router, WebSocket, REST APIs, Static Asset Server
├── web/                     # React 19 + Tailwind v4 + Vite frontend
├── deploy/
│   ├── docker/              # Dockerfile & docker-compose.yml
│   └── live-build/          # Debian live-build ISO generation
├── scripts/                 # Dev tools, version bump, changelog, build scripts
├── docs/                    # Architecture, Development, Deployment, API, Security
├── Makefile                 # Unified build pipeline
├── VERSION                  # Source-of-truth version (SemVer)
└── CHANGELOG.md             # Keep a Changelog format

Tech Stack

SubsystemTechnologyRationale
Core DaemonGo (CGO_ENABLED=0)Single static binary, Goroutine concurrency, instant startup
FrontendReact 19 / Tailwind v4 / ViteEmbedded via go:embed, compressed bundle <2 MB
Remote AccessTailscale tsnetEmbedded mesh VPN node, E2E encrypted, no port forwarding
Tool ProtocolModel Context Protocol (MCP)Open standard for LLM tool integration via stdio/SSE
Plugin Runtimewazero (WASM)Pure Go WebAssembly runtime, no CGO, sandboxed execution
AuthOAuth 2.1 (PKCE S256)Industry-standard SaaS authentication
SandboxBubblewrap + Cgroups v2Namespace isolation, resource limits (512 MB RAM, 50% CPU, 30 PIDs)
Storagemodernc.org/sqlite + chromem-goEmbedded relational DB (FTS5) + vector search, zero external deps
VaultAES-256-GCM + Argon2idEncrypted secret storage for provider keys and tokens
Base OSDebian 12 Minimal / Alpine LinuxBare-metal driver support / minimal container image

Contributing

We welcome contributions! Please read our Contributing Guide for details on:

  • Code style and conventions
  • Branch naming and commit message format (Conventional Commits)
  • Pull request process
  • Release workflow

Security

For security vulnerabilities, please see our Security Policy. Do not file public issues for security bugs.

License

ActonOS is licensed under the Apache License 2.0.

Copyright 2026 ActonOS Contributors

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0
↑↓ navigate openesc close