Spawn the XTM suite (OpenAEV, OpenCTI, or both)
When to use this
- You want a running instance of the suite to test against — a connector (injector, collector, or executor), cross-product behavior, or just to click through a live deployment — without deciding up front which single platform you need.
- You need OpenAEV and OpenCTI running side by side (e.g. testing a connector that talks to both, or comparing behavior across products).
This is a thin wrapper around
spawn-openaev-stack and
spawn-opencti-stack — use those directly
(via scripts/spawn-openaev.sh / scripts/spawn-opencti.sh) if you only ever
need one platform. scripts/spawn-suite.sh exists purely to spawn/tear down
either or both together under one shared prefix, without you having to
remember two separate project names.
Procedure
Pick your stack(s)
# OpenAEV only:
./scripts/spawn-suite.sh up --stack openaev
# OpenCTI only:
./scripts/spawn-suite.sh up --stack opencti
# Both, side by side:
./scripts/spawn-suite.sh up --stack both
Each platform becomes its own isolated compose project
(xtm-dev-openaev / xtm-dev-opencti by default), each with its own Docker
network, volumes, and XTM Composer instance — the two stacks never collide,
and each Composer manages connectors for its own platform only.
Add -p <prefix> to change the shared prefix (useful for running multiple
suites side by side, e.g. to compare a PR branch against main):
./scripts/spawn-suite.sh up --stack both -p suite-pr
Build from local checkouts instead of pulling released images
./scripts/spawn-suite.sh up --stack both \
--build-openaev /path/to/openaev-checkout \
--build-opencti /path/to/opencti-checkout
You can mix released + local — e.g. only --build-openaev to test an OpenAEV
change against a released OpenCTI.
Watching logs / cleanup
./scripts/spawn-suite.sh logs --stack openaev # --stack both is ambiguous for logs; pick one
./scripts/spawn-suite.sh down --stack both -p xtm-dev
Once it's up
Each spawned stack prints its own URL and admin login/password (openaev.io / opencti.io email domains by default). From there, deploy and test a connector against either platform — see test-with-suite for the full connector-testing walkthrough, including Docker-networking gotchas that apply to both platforms.