chantra is a standalone Linux/POSIX command-line client for the Chantra public API at https://api.chantra.io. It is only a client: it does not run a server, use backend packages, store channels, or persist keys.
Download or build the single chantra binary and place it on your PATH.
make build
# or
go build -o bin/chantra ./cmd/chantrachantra channel create --visibility public --output env
chantra channel create --visibility private --output envchantra channel grant-read \
--publish-key "$CHANTRA_PUBLISH_KEY" \
"$CHANTRA_CHANNEL_URL" \
--output envecho "hello" | chantra publish --publish-key "$CHANTRA_PUBLISH_KEY" "$CHANTRA_CHANNEL_URL"
go run main1.go | chantra publish --publish-key "$CHANTRA_PUBLISH_KEY" "$CHANTRA_CHANNEL_URL"chantra read --read-key "$CHANTRA_READ_KEY" "$CHANTRA_CHANNEL_URL"
chantra read --read-key "$CHANTRA_READ_KEY" "$CHANTRA_CHANNEL_URL" | go run main2.gochantra read \
--read-key "$INPUT_READ_KEY" \
"$INPUT_CHANNEL_URL" \
| go run processor.go \
| chantra publish \
--publish-key "$OUTPUT_PUBLISH_KEY" \
"$OUTPUT_CHANNEL_URL"publish --format lines sends each line as one message; raw sends all stdin as one message; jsonl validates each input line as JSON. read --format lines emits payloads, raw emits payload bytes, jsonl emits JSON Lines metadata, and sse passes through SSE frames.
Optional: CHANTRA_API_BASE_URL, CHANTRA_PUBLISH_KEY, CHANTRA_READ_KEY. Flags override environment variables.
export CHANTRA_PUBLISH_KEY="..."
echo "hello" | chantra publish "$CHANTRA_CHANNEL_URL"
export CHANTRA_READ_KEY="..."
chantra read "$CHANTRA_CHANNEL_URL"Keys are sent in headers, never stored locally, and must not be logged. Normal pipeline data is written to stdout; diagnostics and errors go to stderr.
make fmt
make vet
make buildmake testREST endpoint constants in internal/api/endpoints.go are based on https://chantra.io/llms.txt: POST /channels, POST /channels/{channelID}/publish, and POST /channels/{channelID}/read-grants under https://api.chantra.io/v1.