Installation
Requirements
| Component | Requirement | Purpose |
|---|---|---|
| Go | 1.21+ | All binary builds |
| C compiler | GCC | Server SQLite driver (CGO_ENABLED=1) |
| Python 3 | Any recent version | Windows agent delivery helper |
| Linux/amd64 | Server and operator machine | Verified runtime platform |
| Windows/amd64 | Agent target only | Cross-compiled from Linux; no native build needed |
The agent can be cross-compiled for Windows with CGO_ENABLED=0. The server requires CGO_ENABLED=1 for the SQLite driver.
Build the Go components
# Server (CGO required for SQLite)
CGO_ENABLED=1 go build -o ./bin/sentrava-server ./cmd/server
# Operator CLI
go build -o ./bin/sentrava-client ./cmd/client
# Stock agent binary (unconfigured — used as base for generate)
go build -o ./bin/sentrava-agent ./cmd/agent
Or use the provided Makefile targets:
make release-server # builds server with CGO
make build # builds all three binaries
Windows cross-compilation
The Windows agent requires CGO_ENABLED=0 and the appropriate cross-compilation toolchain. No additional C compiler is needed for the agent; the cross-compiler is only required if you need CGO for custom modules.
# Install the Windows cross-compilation target (Debian/Ubuntu)
sudo apt-get install gcc-mingw-w64-x86-64
# Cross-compile the stock Windows agent binary
GOOS=windows GOARCH=amd64 CGO_ENABLED=0 go build -o ./bin/sentrava-agent.exe ./cmd/agent
# Or use the Makefile target
make build-windows
The generate command in the CLI handles Windows cross-compilation automatically when --os windows is specified. The above is only needed if you want to pre-build the stock binary manually.
Garble (optional)
Garble is a Go compiler wrapper that renames symbols, obfuscates literals, and strips debug information. When --garble is passed to generate, the agent is compiled with Garble instead of go build.
# Install Garble
go install mvdan.cc/garble@latest
# Verify installation
garble version
Garble requires the same Go version as the project. If Garble is not installed, generate --garble will fail with a clear error message.
Build the dashboard (optional)
The web dashboard is a separate frontend served as static files. The server reads from the configured dashboard/dist directory at runtime.
cd dashboard
npm ci
npm run build
Verify the build
./bin/sentrava-server --help
./bin/sentrava-client --help
./bin/sentrava-agent --version 2>/dev/null || echo "stock binary built"
First run
On first startup the server generates its PKI (CA, server cert, operator cert) and initializes the SQLite database:
./bin/sentrava-server
Default paths:
| Resource | Default location |
|---|---|
| Database | ./sentrava.db (current directory) |
| PKI directory | ./certs/ |
| gRPC operator API | 127.0.0.1:50051 |
| Dashboard HTTPS | 127.0.0.1:8080 |
| Agent mTLS listener | 127.0.0.1:4433 (default, loopback only) |
Use --db and --certs flags to override the database and PKI paths:
./bin/sentrava-server --db /opt/sentrava/sentrava.db --certs /opt/sentrava/certs
Next steps
- Quick start — get a session in five minutes