Skip to content

CLI and scripts

Operators do most things through the MSSP UI or the REST API. The CLI surface is small and exists for bootstrap, dev environments, and offline operations.

In-pod entry points

These run inside soctalk-system-api (or a one-shot Job). They use the pod's mounted Postgres credentials and chart config — no external state.

Bootstrap

There is no separate bootstrap CLI in this release — the chart's API pod init command runs the bootstrap inline (migrations, role passwords, organization row, optional admin user). See Install — Migrations and bootstrap.

LLM smoke test

There is no soctalk.llm.smoke_test CLI in this release. To sanity-check that a configured LLM is reachable, see LLM providers — Sanity test for the one-liner Python expression.

soctalk-auth (in-pod helper)

The only first-class CLI helper in this release. Single subcommand: set-password.

bash
kubectl -n soctalk-system exec -it deploy/soctalk-system-api -- \
  soctalk-auth set-password user@example.com

Prompts for a new password (or reads from SOCTALK_PASSWORD), looks up the user, sets the hashed password, and audits auth.password.reset.admin. Useful for forced resets without going through the API. The user row must already exist; soctalk-auth does not create rows.

soctalk (orchestrator entry point)

soctalk is the orchestrator entry point — runs the LangGraph supervisor + workers. In V1 the API pod embeds the orchestrator (no separate soctalk-system-orchestrator Deployment). Not typically invoked by hand outside of dev.

No general-purpose soctalk-cli yet

The earlier draft of this page listed tenant management commands under a soctalk-cli binary that does not exist in the current release. Tenant actions (suspend, resume, decommission, rotate-admin) today go through the REST API. The CLI surface for tenant operations is tracked for a future release.

Repo-side: justfile recipes

justfile in the repo root has recipes used during development and release:

RecipeWhat it does
just build-apiBuild the API container image
just build-orchestratorBuild the orchestrator container image
just build-frontendBuild the SvelteKit frontend container image
just build-mock-endpointBuild the mock endpoint sim image
just runRun the dev stack via docker-compose
just push-allPush all images to the configured registry
just releaseTag + push images + chart + create a GitHub Release

Repo-side: scripts/

ScriptPurpose
scripts/dev-up.shBring up a single-node k3d dev cluster with SocTalk and a seeded tenant
scripts/local-up.shSame, but on the host's k3s instead of k3d
scripts/local-down.shTear down a local-up.sh cluster
scripts/e2e-l1-l2-k3d.shTwo-cluster k3d setup (MSSP L1 + tenant L2) for full e2e validation
scripts/seed-mssp-demo-data.pyPopulate Postgres with fixture tenants (acme-corp, wayne-industries, stark-defense) and replay Wazuh alerts via the indexer for screenshot prep
scripts/inject_test_data.pyInject specific test payloads — useful when reproducing a customer-reported bug
scripts/verify-pages-visual.pyPlaywright visual regression check against the dev SocTalk UI

These all expect to run from the repo root. Read the script header for the exact arguments.

Repo-side: Packer

For VM image builds, see Downloads → Build it yourself.

Air-gapped operations

For installs without internet access, the API + soctalk-auth are sufficient to run SocTalk without touching the UI:

bash
# Bootstrap happens automatically in the API pod's init command — no
# extra step. Just install the chart with install.bootstrapAdmin.* set.

# Or, if those weren't supplied, set the admin password after install:
kubectl -n soctalk-system exec deploy/soctalk-system-api -- \
  soctalk-auth set-password admin@example
# Read the admin credentials.
kubectl -n soctalk-system get secret soctalk-system-bootstrap-admin \
  -o jsonpath='{.data.password}' | base64 -d; echo

# Onboard a tenant via the API.
curl -k -c jar -X POST http://soctalk-system-api:8000/api/auth/login \
  -d '{"email":"admin@example","password":"..."}'
curl -k -b jar -X POST http://soctalk-system-api:8000/api/mssp/tenants/onboard \
  -d '{"slug":"acme","display_name":"Acme","profile":"persistent"}'

For the bootstrap admin's existing password the bootstrap Job emits, see Install → Migrations and bootstrap.

Source pointers

ConceptFile
Bootstrap (inline)charts/soctalk-system/templates/30-api.yaml (init command)
LLM provider factorysrc/soctalk/llm.py
soctalk-auth sourcesrc/soctalk/core/cli/auth.py
soctalk orchestrator entrysrc/soctalk/main.py
justfilejustfile
scripts/scripts/

Released under the Apache 2.0 License.