Community Edition / Docs / Getting started

Fifteen minutes to a flowing study

Install, open the wizard, walk six steps. Everything below runs on one machine with Docker and nothing else.

Prerequisites

  • Docker with Compose v2 (docker compose version) and about 6 GB of free RAM for the containers; the broker JVM is the big consumer.
  • Apple Silicon: Enable "Use Rosetta for x86_64/amd64 emulation" in Docker Desktop settings (the broker image is amd64-only).
  • Windows: Ensure WSL2 is enabled and Docker Desktop uses the WSL2 backend (default on recent installs).
  • No cloud account and no API keys. Optionally an ANTHROPIC_API_KEY upgrades the AI step from the offline stub to a real model.

Install

Pick any of the three:

# one-liner
curl -fsSL https://raw.githubusercontent.com/scientixai/community-edition/main/install.sh | sh

# npx flavor
npx pne-community-edition

# or plain git
git clone https://github.com/scientixai/community-edition
cd community-edition && docker compose up -d

All three end the same way: prebuilt images pulled where available, stack up, broker health-checked. Confirm the punchline yourself:

docker compose logs scorpio | grep in-memory
# ... Profile in-memory activated.

Every broker service in one JVM, in-process messaging, no external message bus, no cloud.

Handling busy ports

The runtime uses ports 9090 (broker), 8080 (web), and 8101–8107 (pipeline services).

If only 9090 or 8080 are busy, use the local overlay:

docker compose -f docker-compose.yaml -f docker-compose.local-run.yaml up -d
# Remaps: broker → 19091, web → 18080

If the entire range is busy (including 18080, 19091, and 8101–8107), use the full-port example:

docker compose -f docker-compose.yaml -f docker-compose.busy-ports.example.yaml up -d
# Remaps: broker → 19092, web → 18081, services → 18101–18107

Overlays remap host-side ports only; container internals stay unchanged. When using an overlay, substitute the remapped ports in all localhost URLs (browser and curl). For concurrent projects, add -p <unique-name> to run multiple stacks.

First run

Open http://localhost:8080/setup.html: the wizard checks service health, seeds the demo study (or starts empty), shows whether the AI layer has a key, and configures optional storage connectors.

Walk the scenario

Then http://localhost:8080 walks six steps: author the CARDIO-118 study, project it to Dataset-JSON, enroll participants, watch the subscription fire the sdtm.oak transform, query the lake with SQL, and end with a natural-language statement flowing through the same pipeline. The terminal twin is ./infra/scripts/demo.sh, and every step is plain curl if you want to see the requests.

The full hand-typed version of the walkthrough, request by request, lives in the repository: docs/getting-started.md.

Query anything

python3 lake/query.py "SELECT VISIT, round(avg(VSSTRESN),1) AS mean_sysbp
  FROM read_csv_auto('/lake/sdtm/vs.csv')
  WHERE VSTESTCD='SYSBP' GROUP BY VISIT ORDER BY min(VISITNUM)"

Reset

docker compose down -v && rm -rf lake/data/* && docker compose up -d

Troubleshooting

  • Broker never healthy: docker compose logs scorpio; on Apple Silicon without Rosetta the JVM can crash-loop.
  • Corporate proxy with TLS inspection: drop your proxy CA certificates into pipeline/transform/build-support/ca/ and lake/build-support/ca/ before building locally.
  • Ports: Standard ports (8080, 8101–8107, 9090) must be free, or use a port overlay (see Handling busy ports above). Edit or create custom overlay files for other mappings.
  • install.sh with overlays: Set SCORPIO_HOST_PORT=19091 or BROKER_HEALTH_URL=http://localhost:19091/q/health when running install.sh with custom port mappings.