CLI · 03

cosmo synapse

Boot the local dev synapse - a zero-dependency TCP + NDJSON broker - and stream every Signal that crosses it. The same subject-matching semantics as MemorySynapse and NATS, so code written against the dev server runs unchanged in production.

$ cosmo synapse --help

Manage Cosmonapse synapse servers.

Subcommands
  start     Boot a synapse (memory / nats / kafka) and stream Signals.
  view      List namespaces, or stream Signals for one namespace.
  stop      Gracefully stop a running namespace.

# ── cosmo synapse start ─────────────────────────────────────
$ cosmo synapse start <transport> [options]

Arguments
  transport               memory | nats | kafka

Options
  --namespace, -n <ns>   Namespace.            Default: dev
  --host <addr>           Bind address (memory). Default: 127.0.0.1
  --port <n>              TCP port (memory).    Default: 7070
  --broker <url>          Broker URL (nats/kafka).
  --quiet                  Don't stream Signals to stdout.

Examples

$ cosmo synapse start memory --namespace=quickstart

  URL:        cosmo://127.0.0.1:7070
  Namespace:  quickstart
  Transport:  TCP + NDJSON  (single-host dev only)

  Connect a Dendrite with:
    await connect_synapse('cosmo://127.0.0.1:7070')

  Ctrl-C  or  cosmo synapse stop --url=cosmo://127.0.0.1:7070 --namespace=quickstart
  ────────────────────────────────────────────────

$ cosmo synapse start nats --namespace=prod --broker=nats://localhost:4222

# ── cosmo synapse view / stop ────────────────────────────────
$ cosmo synapse view --url=cosmo://127.0.0.1:7070               # list all namespaces
$ cosmo synapse view --url=cosmo://127.0.0.1:7070 -n dev      # stream live signals
$ cosmo synapse stop --url=cosmo://127.0.0.1:7070 -n dev      # graceful stop

Run state (which namespaces are live, on which ports) is kept under ~/.cosmonapse by default - override the location with the COSMONAPSE_STATE_DIR environment variable. cosmo synapse stop reads that state to find the running server.

Have a feature in mind?

The protocol, SDKs, and CLI are still pre-1.0. If something here is missing, ambiguous, or wrong - open an issue and propose a change. Every breaking change is debated in DECISIONS.md first.