Quick start

Run the binary with defaults (loopback only):


./pulse_app
# pulse: listening on 127.0.0.1:8080

Or check the effective configuration without binding:


./pulse_app --check-config

Invalid values do not crash the server; they fall back to the default and are reported as warnings at startup and in --check-config.

First requests


curl -s http://127.0.0.1:8080/health
# {status:ok}

curl -s http://127.0.0.1:8080/api/version
# {name:xiom-pulse,version:0.1.0,...}

curl -s -X POST http://127.0.0.1:8080/api/echo \
  -H 'Content-Type: application/json' --data '{hello:pulse}'
# {echo:{hello:pulse}}

curl -s -X POST http://127.0.0.1:8080/api/events \
  -H 'Content-Type: application/json' --data '{kind:note,msg:first}'
curl -s http://127.0.0.1:8080/api/events/count
# {count:1}
curl -s 'http://127.0.0.1:8080/api/events?limit=1'

The store defaults to pulse-events.jsonl in the working directory; the audit log defaults to pulse-audit.log. Point both at a data directory for a real deployment (see Configuration).

Stop

X-Pulse-Quit: 1 on /health is the test-only graceful shutdown hook. Production supervision should stop the process with the supervisor (no SIGTERM drain yet -- see Security and beta limits):


curl -s -o /dev/null -H 'X-Pulse-Quit: 1' http://127.0.0.1:8080/health