Skip to content

Deployment and Services

This page covers the operational entry points for the SDLX development stack. Module-specific configuration remains inside each project directory; credentials and local databases must not be committed.

Start the Stack

From the repository root:

bash
cd /home/flare/sdlx
./run.sh start
./run.sh status

The default stack includes LabBridge, LabFlow, PACE, ASCEND, and this documentation site. Composer is started separately because its nanobot runtime requires an explicit model key.

Service Directory

ServiceLocal portResponsibility
LabBridge Admin8088Devices, Human Tasks, spatial registry, operations, artifacts
LabBridge MCP HTTP8091Agent and scheduler gateway boundary
LabBridge MCP WebSocket8090WebSocket and Xiaozhi MCP clients
LabFlow8102Workflow editing and deterministic execution
PACE8103Loop packages, experiment runs, Result Bundles
ASCEND8110Campaign coordination, chat, iterations, decisions
SDLX Docs8112Searchable architecture and operations documentation
Composer8120Scientific composition and reviewed package generation

LabFlow

LabFlow reads labflow/config/config.yaml by default. An isolated deployment or recovery test can select a different file without modifying the checked-out configuration:

bash
LABFLOW_CONFIG=/path/to/labflow.yaml labflow/run.sh start

ASCEND

ASCEND uses the same model configuration shape as Composer, but reads an independent module-local file:

bash
cp ascend/config/config.example.yaml ascend/config/config.yaml
ASCEND_CONFIG=/home/flare/sdlx/ascend/config/config.yaml ascend/run.sh restart

Configure ascend.llm.provider, model, base_url, and api_key. The local config is ignored by Git. ASCEND renders its private nanobot config into ascend/run/; it does not read Composer's key, sessions, or workspace.

Documentation Site

The documentation site reads Markdown directly from docs/:

bash
docs-site/run.sh build
docs-site/run.sh start
docs-site/run.sh status

Use DOCS_HOST and DOCS_PORT to override the default 0.0.0.0:8112 binding.

The documentation runtime exposes GET /api/status. It queries LabBridge, LabFlow, PACE, ASCEND, and Composer in parallel and returns a read-only operational summary for the live dashboard on the home page. The browser refreshes the snapshot every 15 seconds; device counts come directly from LabBridge rather than from generated documentation.

Use these settings when services are not available on their default loopback ports:

text
DOCS_LABBRIDGE_URL=http://127.0.0.1:8088/api/summary
DOCS_LABFLOW_URL=http://127.0.0.1:8102/api/health
DOCS_PACE_URL=http://127.0.0.1:8103/api/health
DOCS_ASCEND_URL=http://127.0.0.1:8110/api/health
DOCS_COMPOSER_URL=http://127.0.0.1:8120/health
DOCS_STATUS_TIMEOUT_MS=1500

Reverse Proxy

Recommended public routes:

text
bridge.sdl.digauto.org -> 8088
mcp.sdl.digauto.org    -> 8091
flow.sdl.digauto.org   -> 8102
pace.sdl.digauto.org   -> 8103
ascend.sdl.digauto.org   -> 8110
docs.sdl.digauto.org   -> 8112

During the ASCEND rename, helm.sdl.digauto.org may remain as a temporary compatibility alias to port 8110. New links and certificates should use ascend.sdl.digauto.org; retire the previous host after clients and bookmarks have migrated.

Terminate TLS and enforce authentication at the proxy. Do not expose MQTT, EMQX management, MinIO internals, SQLite files, or controller polling endpoints directly.

Recovery Verification

The contract suite checks state-machine behavior in-process. The live recovery suite starts isolated real services, writes persistent records, force-stops every process, restarts them, and verifies records through HTTP:

bash
scripts/test-golden-loop-recovery.sh
scripts/test-live-process-recovery.sh

Set SDLX_RECOVERY_PORT_BASE when the default isolated port range beginning at 18288 is in use.

SDLX technical documentation