Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Signals peer unit (atelier.service)

Atelier joins the Signals lattice as peer id atelier. systemd is only the signals.target membership hook. The wire contract is zndx.engine.v1.Engine on :50251.

Gaius-style wrap: ExecStart is devenv up -d. The lattice engine is the devenv process capability-engine, so devenv processes status|restart|stop capability-engine works. The same graph starts on Linux and macOS — devenv already gates linux-vs-darwin (CUDA libs, d2); there is no laptop-vs-server switch.

Lattice accept is Engine/Status at gRPC bind, not vLLM cold-load and not product HTTP. Status also advertises surfaces (kind=primary, devenv Vite :3300, never Metaflow :3000) and answers ServerQuery (REMOTES / PEERS / SURFACES / QUEUES / WORKLOADS). QueueHint is declared leaf shape. WorkloadHint carries model + capabilities + tp/pp (gpu_tokens = tp×pp); never encode those in the queue name. Pick heavy/medium/light from that share. Occupancy over time is zndx.scheduler.v1.Scheduler/RequestQueueShare (RFC 9562 UUIDv7 on every call; UNIMPLEMENTED = Signals-not-yet; REJECTED / other errors #YK.00000007.SHAREFAIL — do not admit). Zero-floor + valid_until when the WRK ends. Atelier never writes queues.yaml.

FactValue
Peer idatelier
Unitatelier.service (After=signals-ready.service)
Wrappersscripts/systemd_{start,stop,unit}.sh
Engine processdevenv capability-enginescripts/processes/capability-engine.sh
Status probescripts/zndx_status_ok.py (codegen stubs)
gRPC lattice:50251zndx.engine.v1.Engine (+ native AtelierEngine)
Product servicer:50071 (same devenv graph; not the accept gate)
Postgres:5533 — never Signals :5455 / RustFS :9010
Capabilityreferee (and instruct when configured)
Status.projectatelier

Two gRPC ports (same graph, different accept)

PortProcessRole
:50251capability-engineLattice accept
:50071grpc-serverWorkbench product gRPC

Do not wait for vLLM SERVING — Status at bind is enough.

Wrappers

systemd_start.sh is idempotent: if a process-compose-owned listener already answers Engine/Status and a login-shell devenv processes sees that compose, it exits 0. The wrappers pin XDG_RUNTIME_DIR to /run/user/<uid> so systemctl restart atelier and devenv processes restart gateway share one graph. Foreign/old setsid engines and leftover /tmp/devenv-* daemons for this checkout are reaped, then devenv up -d (never foreground just up). Do not pin a dedicated DEVENV_RUNTIME in the unit — that splits systemd from the login-shell devenv.

systemd_stop.sh runs just down / devenv processes down for this checkout and reaps leftover atelier.engine PIDs. It does not:

  • run just teardown or GPU-deep-cleanup
  • write, delete, or scan /tmp/zndx-gpu-leases (Gaius :50051 / Ægir :50151 leases stay)
# Same graph as the unit
devenv up -d
devenv processes status          # includes capability-engine
grpcurl -plaintext 127.0.0.1:50251 list
grpcurl -plaintext 127.0.0.1:50251 zndx.engine.v1.Engine/Status
devenv processes restart capability-engine
just down

Operator (from Signals)

just install-systemd --peers atelier --enable
sudo systemctl start signals.target    # not bare "signals"
grpcurl -plaintext 127.0.0.1:50251 list
grpcurl -plaintext 127.0.0.1:50251 zndx.engine.v1.Engine/Status
just lattice-ci --require atelier

Platform Metaflow

export METAFLOW_SERVICE_URL=http://127.0.0.1:30180

Health

Lattice-ci probes Status + reflection only. Product health stays Atelier-local. GPU leases: /tmp/zndx-gpu-leases — stop must stay lease-aware so it does not wipe Gaius / Ægir.