Quickstart Guide
Deploy the syntropd daemon suite and activate lazy socket listening in under two minutes across any modern Linux distribution.
Prerequisites
| Component | Minimum Requirement | Recommended / Optimal |
|---|---|---|
| Linux Kernel | 6.1 LTS+ with cgroups v2 & PSI enabled |
6.6+ with Landlock ABI v3+ |
| Init System | systemd v252+ with socket activation | systemd v256+ with varlinkctl bundled |
| Architecture | x86_64 or aarch64 | x86_64 with AVX-512 / AMX or aarch64 Neon |
| Hardware Accelerators | CPU vector fallback (supported natively) | DRM GPU (NVIDIA / AMD / Intel) or NPU |
Installation
Choose your preferred installation method.
1. Universal Installer Script (Recommended)
Detects your Linux distribution, downloads the appropriate signed release binaries, and registers the systemd unit files:
curl -fsSL https://syntropd.github.io/install.sh | sudo bash
Optionally pass your Hugging Face token for unthrottled downloads of gated models: curl -fsSL https://syntropd.github.io/install.sh | sudo bash -s -- --hf-token <TOKEN> (or enter it when prompted).
2. Distribution Package Managers
sudo dnf copr enable syntropd/release
sudo dnf install syntropd syntropctl
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://syntropd.github.io/gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/syntropd.gpg
echo "deb [signed-by=/etc/apt/keyrings/syntropd.gpg] https://syntropd.github.io/deb stable main" | sudo tee /etc/apt/sources.list.d/syntropd.list
sudo apt-get update && sudo apt-get install -y syntropd syntropctl
yay -S syntropd-bin syntropctl-bin
3. Rust Toolchain / crates.io
Install the entire suite via the umbrella meta-crate, or install daemons individually via cargo install:
# Option A: Install full suite via umbrella meta-crate
cargo install syntropd
# Option B: Install operator CLI and daemons individually
cargo install syntropctl
cargo install syntrop-sentry
cargo install syntrop-inferenced
cargo install syntrop-modeld
cargo install syntrop-contextd
cargo install syntrop-toold
cargo install syntrop-runtimed
cargo install syntrop-routerd
cargo install routerctl
Socket Activation & Health Verification
Bring up the socket listeners and verify zero-idle state.
Step 1: Enable & Start Socket Units
Enable the unified socket target. This binds the Unix domain sockets under /run/syntrop/ without starting background daemon processes.
sudo systemctl enable --now syntrop-sockets.target
Step 2: Inspect Socket Health
Verify that all Varlink and wire reverse-proxy endpoints are in the listening state:
LISTEN UNIT ACTIVATES
127.0.0.1:32768 routerd.socket routerd.service
[::1]:32768 routerd.socket routerd.service
/run/syntrop/router.sock routerd.socket routerd.service
/run/syntrop/io.syntrop.Router1 routerd.socket routerd.service
/run/syntrop/io.syntrop.Inference1 inferenced.socket inferenced.service
/run/syntrop/gateway.sock inferenced.socket inferenced.service
/run/syntrop/io.syntrop.Model1 modeld.socket modeld.service
/run/syntrop/io.syntrop.Context1 contextd.socket contextd.service
/run/syntrop/io.syntrop.Tool1 toold.socket toold.service
/run/syntrop/io.syntrop.Runtime1 runtimed.socket runtimed.service
/run/systemd-sentry/sentry.sock systemd-sentry.socket systemd-sentry.service
One front door: syn
Every tool is reachable as syn <namespace> <command>
(syntrop works identically). Namespaces: router,
runtime, store, hardware,
context, tools, fleet, system.
Run syn with no arguments for the map.
Bare words are a question: syn say hello in one sentence
asks the fleet and prints the reply.
Connected Model
gemma4:e4b
qwen2.5-coder:7b
Model Retrieval: syn pull <model>
Download and register GGUF models directly into Content-Addressable Storage (CAS) with streaming SHA-256 integrity verification and automated daemon reload:
Resolving model: qwen2.5:0.5b
Target: qwen2.5:0.5b
Source: https://huggingface.co/Qwen/Qwen2.5-0.5B-Instruct-GGUF/resolve/main/qwen2.5-0.5b-instruct-q4_k_m.gguf
qwen2.5 [00:00:03] [########################################] 397.66 MiB/397.66 MiB (0s) Download complete
SHA-256: 7f9a12bc81e3a4...
Successfully pulled and registered qwen2.5:0.5b
Model Family Autoloader: syn setup
Automatically discover your hardware envelope (RAM, VRAM, CPU cores), download and pin a curated model family (Qwen, Granite, or Gemma), wire speculative decoding in /etc/syntrop/routerd.toml, and reload routerd.service:
=== Syntrop Setup: Family [qwen] (Envelope: auto) ===
[1/3] Sizing hardware envelope and dispatching to modelctl bootstrap...
=== Hardware Envelope & Usable Memory Budgets ===
CPU Cores: 12
Host RAM: 14.8 GB avail -> 7.4 GB usable draft budget (50%)
GPU VRAM: None detected (CPU draft only)
=== Selected Model Family: qwen ===
CPU Draft: qwen2.5:0.5b [Q8_0] (~650 MB)
[✓] modelctl bootstrap completed successfully.
[2/3] Generating speculative routerd.toml configuration...
[✓] Speculative router configuration written to /etc/syntrop/routerd.toml
[3/3] Reloading routerd.service...
[✓] routerd.service reloaded successfully.
Setup completed successfully for family: qwen
Step 3: Run the syntropctl Connectivity Probe
Test end-to-end communication and measure socket dispatch latency:
DAEMON SOCKET STATE LATENCY INTERFACES
inferenced /run/syntrop/io.syntrop.Inference1 ACTIVE 0.41ms io.syntrop.Inference1, org.varlink.service
modeld /run/syntrop/io.syntrop.Model1 ACTIVE 0.32ms io.syntrop.Model1, org.varlink.service
contextd /run/syntrop/io.syntrop.Context1 ACTIVE 0.28ms io.syntrop.Context1, org.varlink.service
toold /run/syntrop/io.syntrop.Tool1 ACTIVE 0.35ms io.syntrop.Tool1, org.varlink.service
runtimed /run/syntrop/io.syntrop.Runtime1 STANDBY 0.15ms io.syntrop.Runtime1, org.varlink.service
routerd /run/syntrop/io.syntrop.Router1 ACTIVE 0.38ms io.syntrop.Router1, org.varlink.service
System Status: OPERATIONAL (All sockets listening; 0 MB idle RAM footprint)
Step 4: Verify Compute Plane Acceleration
PLANE ID KIND DEVICE NAME TOTAL VRAM ALLOCATED PRESSURE
drm-renderD128 DRM_GPU NVIDIA GeForce RTX 4090 24.00 GiB 0.00 GiB Normal (0.0% some)
cpu-amx-0 CPU_AMX Intel Xeon Platinum 8480+ 64.00 GiB 0.00 GiB Normal (0.0% some)
Hardware acceleration is operational.
Step 5: Verify Wire Proxy Ingress & LLM Providers
Verify routerd wire ingress on port 32768 using standard curl and test upstream provider health:
# 1. Query available models via HTTP wire proxy ingress
curl http://127.0.0.1:32768/v1/models
# 2. Inspect configured routing providers
routerctl providers list
# 3. Test latency and connectivity to a specific provider
routerctl test runtimed-local
The universal install.sh script and release build automation pipelines will be published under the GitHub Actions matrix for multi-distribution CI.