Skip to content

Start the gateway

The Go Gateway requires a private QUARSHELL_TOKEN. HTTP requests and gRPC calls use this token as a Bearer credential, except for HTTP liveness and gRPC Health. Keep the token in your shell environment or a local ignored .env file. The shared token represents the static gateway-client administrator; it is not a per-user or sandbox identity.

Docker Compose

From the repository root, generate a local token and start the Gateway:

export QUARSHELL_TOKEN="$(openssl rand -hex 32)"
docker compose -f quarshell-gateway/compose/docker-compose.yml up --build -d
curl --fail https://127.0.0.1:17670/v1/healthz

Compose stores state in the quarshell-gateway-data volume. HTTP is available on 127.0.0.1:17670; gRPC is available on 127.0.0.1:7445. gRPC has no TLS listener. Keep port 7445 on loopback or a trusted private network; do not publish it to untrusted clients.

Local binary

From the repository root:

export QUARSHELL_TOKEN="$(openssl rand -hex 32)"
go -C quarshell-gateway run ./cmd/quarshell-gateway \
  --listen 127.0.0.1:17670 \
  --grpc-listen 127.0.0.1:7444 \
  --runtime docker

Without --data, the Gateway keeps state in memory. Set --data ./state.db to use SQLite. The /v1/healthz endpoint returns only {"status":"ok"}.

The UI and Dex compose profiles are retained from the migration baseline but are not integrated with the current token-authenticated Gateway. See the Gateway module README and remaining migration work for current scope.