Skip to content
LotusMake

Back to The Aeon Forge

Post

Magick Orb Docker: the headless Orb for any server

One docker run puts the headless Magick Orb on an x86 server, a Mac or a DGX Spark: Model Share over IPFS, the Agent Dashboard, MCP and REST, with no Raspberry Pi. What the container lacks versus the Pi, and why port 4001 matters.

6 min read

by The Aeon Forge

The Aeon Magick Orb is a Raspberry Pi appliance. The Pi plugs into another computer, poses as a USB keyboard and mouse, watches the screen through a video capture path, and lets an agent operate that machine as a person at the desk would. Two parts of the same console need none of that hardware: Intergalactic Model Share, which hosts, pulls and pushes models between machines over IPFS, the content-addressed peer-to-peer file network, and the Agent Dashboard, which watches the lab's gateways and deploys a model with one click. Both are useful on machines that will never have a Pi attached: an x86 server, a Mac on Apple Silicon, a DGX Spark.

Magick Orb Docker is the Orb console without the Pi hardware, for exactly those machines. The Pi-only surface belongs to the Pi appliance. The Docker image, published as ghcr.io/aeon-7/orb-server, carries the rest, and one image built for linux/amd64 and linux/arm64 runs it on x86, on Apple Silicon and on the NVIDIA DGX Spark. The repository holds a README, a docker-compose.yml, a license and a .gitignore, because the point is that you pull an image rather than build one.

github.com/AEON-7/orb-server↗

AEON-7/orb-server

Headless Magick Orb for any server — Intergalactic Model Share + Agent Dashboard. docker pull ghcr.io/aeon-7/orb-server

MIT · updated 2026-10-06

Load the latest from GitHub

What the container keeps, and what stays on the Pi

The headless Orb is the Orb console without Raspberry Pi hardware. You get IPFS and Intergalactic Model Share, so the machine can host models, share them, pull them and push them to connected systems. You get the Agent Dashboard: DGX and gateway views, the persona pantheon, container orchestration, one-click model deploy and token telemetry. You get concurrent SSH terminal panes across your fleet, tokens, an audit trail, a REST API and MCP. MCP is the Model Context Protocol, the open standard that lets an agent discover and call tools, so any agent that speaks it drives the Orb with no SDK to install. Dashboard, terminals and model push reach other machines over outbound SSH, which is why the container asks for no extra host privileges.

What you do not get is anything that needs a physical port: no USB-HID, the device class the Pi uses to pose as a keyboard and mouse, no HDMI capture, and no GPIO, the Pi's general-purpose pins. WiFi, firewall, VPN, Tor and DNSCrypt stay on the Pi as well; they need a Raspberry Pi or a privileged host, and a plain container is neither. If keyboard and mouse injection or screen capture is what you came for, the Pi appliance in the Pi appliance article is the right tool.

The quick start

You need Docker Engine 24 or newer. Compose v2 is optional, and there is no clone and no build. One command starts the Orb with both volumes and all four port mappings:

Code, shelldocker run -d --name aeon-orb --restart unless-stopped \
  -p 8443:443 -p 8080:8080 \
  -p 4001:4001 -p 4001:4001/udp \
  -v aeon-etc:/etc/aeon \
  -v aeon-data:/var/lib/aeon \
  ghcr.io/aeon-7/orb-server:latest

Then open https://localhost:8443/ in a browser. The certificate is self-signed, so the warning is expected; accept it. The setup wizard asks for an admin password, and after that you land on the Agent Dashboard. IPFS and Model Share come up with the container, so there is nothing else to start.

Two habits save trouble later. There are no GitHub releases to browse yet; versions live in the image tags, so pin one, :v118 for example, rather than letting :latest surprise you with a new pull. If you prefer Compose, the repository's docker-compose.yml runs the same image, sets restart: unless-stopped, and maps host.docker.internal to the host gateway through extra_hosts:

Code, shelldocker compose up -d

Ports, volumes and the factory reset

Four port mappings leave the container, and each has one job.

Host port Inside What it carries
8443 443 Web UI, REST and MCP over HTTPS, self-signed certificate
8080 8080 IPFS gateway, once IPFS is up
4001 tcp 4001 IPFS swarm
4001 udp 4001 IPFS swarm over QUIC, the UDP transport
The four published ports.

State lives in two named volumes. aeon-etc, mounted at /etc/aeon, holds the admin credentials, the TLS certificate and the API tokens. aeon-data, mounted at /var/lib/aeon, holds the IPFS repository and the model library, which is where the gigabytes go. Removing the container leaves both volumes in place, so an upgrade is a stop, a remove and a fresh run against the same volume names:

Code, shelldocker stop aeon-orb
docker rm aeon-orb
Code, shelldocker volume rm aeon-etc aeon-data

How Orbs find each other on port 4001

This is the part I most want to explain, because it is where a headless Orb stops behaving like an ordinary web app in a container. Model Share has no central server, no account and no fleet token. Orbs find each other through the public Amino DHT, the distributed hash table of the IPFS network, a shared index of which peers hold a given piece of content. Every Orb pins the same well-known rendezvous CID, a content identifier that exists only to be looked up, so an Orb that asks the DHT who holds that CID gets back the list of other Orbs. You never need to know anyone's LAN address, and nobody needs to know yours.

Finding a peer and reaching it are different problems, and port 4001 is about the second. Publishing 4001 on tcp and udp lets other Orbs, a Pi across the WAN or another container, dial your node directly or hole-punch to it, opening a path through both sides' NAT at once, which is what makes Model Share catalogs and downloads work in both directions. If 4001 is firewalled, catalogs may still arrive through a circuit relay, where a third node forwards the traffic, but a multi-gigabyte model fetch usually needs a direct path: the published port, UPnP on the router, IPv6 or a successful hole punch.

The lesson that goes with this is the advertise address. Unless you say otherwise, a node inside Docker tells the swarm it lives at Docker's internal 172.x bridge address, which exists only inside your host, so peers dial a door that is not there. The fix is one environment variable, -e AEON_IPFS_ANNOUNCE=<this-machine-ipv4>, which makes the node advertise the host's IPv4 so that peers reach the 4001 you actually published. On any machine that should serve models beyond its own LAN, I treat it as part of the run command.

Reaching the fleet, and where the Orb fits

Plain LAN and SSH addresses need no setup. If your machines live behind 100.x Tailscale names, the container has to join the tailnet, and two arrangements work: a Tailscale sidecar with network_mode: service:tailscale, or Tailscale on the host plus host networking for the Orb.

The headless Orb belongs wherever a machine already holds models worth sharing. A DGX Spark is a natural host, since the arm64 image is built for Apple Silicon and the Spark alike; the AEON vLLM Ultimate build and DeepSeek V4 on two DGX Sparks describe that side of the fleet. For the persona pantheon on the dashboard, see also Create agentic personas, and everything I publish is listed in the Aeon Forge catalog.

Sources

  • Run your own AI benchmark: AEON Bench and the Bench Pod

    AEON Bench measures any open model's quality and real speed on your own hardware, signs the result and ranks it with its exact recipe. Why a stranger's score can be trusted, how to read the boards, and the five steps to a first run.

    The Aeon Forge14 min read
  • AEON vLLM Ultimate: one serving image for the DGX Spark

    AEON vLLM Ultimate is vLLM built from source for the DGX Spark's GB10 and shipped as one 18.3 GB image that serves the whole AEON fleet with speculative decoding and NVFP4 weights. Here is why it exists, what broke on the way, and how to pull and run it.

    The Aeon Forge14 min read
  • Aeon Magick Orb: a Raspberry Pi that gives an AI agent eyes and hands

    The Aeon Magick Orb is a Raspberry Pi that plugs into a computer's HDMI and USB ports so an AI agent can see the screen and type, click and reboot, with nothing installed on the target. How it works, what broke on the way, and how to build one on a Pi 4 or Pi 5.

    The Aeon Forge11 min read
  • The AEON Forge catalog: every project and what to read first

    A guided tour of the AEON Forge catalog: NVFP4 models for the DGX Spark, MLX builds for Apple Silicon, the voice stack, the media tools, the Orb and the Bench, with the article to read first in each group.

    The Aeon Forge11 min read
  • Qwen3-TTS server: streaming speech that starts in 0.4 seconds

    An OpenAI-compatible Qwen3-TTS server for the DGX Spark that streams audio while the GPU is still generating: first audio in about 0.4 s, voice design and voice cloning loaded side by side, a voices library endpoint, and the version drift to check before you deploy.

    The Aeon Forge8 min read

Stoke the forge. From $4, straight to The Aeon Forge.