Documentation / operator foundations
Getting Started
with Sentrava C2
Understand the control plane, prepare an isolated environment, and verify the exact capabilities you intend to demonstrate.
Use Sentrava only within a documented authorization boundary. The commands below describe local validation and administrative startup. Keep test databases, PKI, and credentials separate from an existing installation.
01Requirements
The verified baseline is Linux/amd64. A directory or build target for another platform is not evidence that its complete runtime workflow has been tested.
| Component | Requirement | Purpose |
|---|---|---|
| Go | 1.26.6 | Server, CLI, and agent builds |
| C compiler | GCC; server CGO enabled | SQLite driver |
| Node + npm | Compatible with the committed dashboard manifests | Frontend installation and build |
| Chromium | Available locally | Browser smoke tests |
| NSS tools | certutil; Debian/Kali package libnss3-tools | Temporary browser trust stores |
| curl | HTTPS and CA validation enabled | Readiness and asset checks |
GOTOOLCHAIN=local go version
gcc --version
node --version
npm --version
command -v chromium
command -v certutil
curl --versionIf the installed Go version differs, select the already installed required toolchain explicitly. Do not confuse a passing compile with a tested release artifact.
02Installation
Use an authorized checkout of the repository. Repository access may be restricted. Perform builds in an isolated source copy so existing binaries, databases, and credentials remain intact.
Inspect the checkout
Record the revision and working-tree state. Read
README.mdandPLAYBOOK.mdfrom that same revision.Build the Go components
Use the required Go version and the committed module files. The Makefile supplies the component-specific CGO settings.
Build the optional dashboard
The server reads frontend files from a configured asset directory. They are not embedded in the server binary.
git rev-parse HEAD
git status --short
GOTOOLCHAIN=local GOFLAGS=-mod=readonly go mod verify
GOTOOLCHAIN=local GOFLAGS=-mod=readonly go build ./...
GOTOOLCHAIN=local make build GO="$(command -v go)"cd dashboard
npm ci
npm run buildThe local server-and-dashboard bundle includes the server and dashboard/dist. Client and agent binaries are separate. A local bundle is not automatically equivalent to a tested GoReleaser release.
03Quick start
An existing installation needs a matching SQLite database and PKI, an explicit asset path, and separate saved settings for the server and operator client. Consult the built binaries for their exact setup flags.
./bin/sentrava-server --help
./bin/sentrava-client configure-local --help
./bin/sentrava-client --helpThe setting order is explicit flag → saved configuration → safe default. Saved paths are absolute. The usual user configuration files are ~/.config/sentrava/server.json and ~/.config/sentrava/client.json, or their equivalents under XDG_CONFIG_HOME.
Do not delete a working database or regenerate PKI to fix a startup error. Back up SQLite consistently and back up PKI separately before migration. A database snapshot does not contain private keys.
# Terminal one
./bin/sentrava-server
# Terminal two
./bin/sentrava-client| Service | Local default | Trust requirement |
|---|---|---|
| Operator gRPC | 127.0.0.1:50051 | Registered operator mTLS certificate |
| Dashboard HTTPS | 127.0.0.1:8080 | Trusted server CA; configured web access |
| Agent mTLS | 127.0.0.1:4433 | Registered identity and current server policy |
Saved settings can override these addresses. Check the effective configuration and occupied ports before startup. Stop only processes that belong to your test.
04First session: verify the test boundary
A session requires a recognized certificate, matching AgentID and OperationID, an eligible enrollment, and the applicable operation policy. A trusted CA signature alone does not authorize an unknown agent.
Use the repository’s isolated tests to inspect the lifecycle. The administrative subprocess test covers server/client administration. The tagged mTLS E2E uses an in-process agent model; it is not a real agent subprocess.
GOTOOLCHAIN=local go test \
-run '^TestAdministrativeSetupThroughCLIAndHTTPS$' \
-count=1 -timeout=120s ./tests/integration
GOTOOLCHAIN=local go test \
-tags=e2e -count=1 -timeout=120s ./tests/e2e/...Additional subprocess coverage is described under Verification. A result is evidence only for the exact scenario and revision that were executed.
Transports
mTLS Supported
The supported runtime path uses mutual TLS and a server-side enrollment record. Check-in and task authorization bind the certificate fingerprint, AgentID, operation, and the applicable target policy. Revocation and operation closure prevent further authorized access.
TCP Disabled
Retained TCP implementation code is not an enabled agent listener in the supported MVP. A transport must preserve enrollment and result ownership guarantees before it can be advertised as available.
HTTP + profiles Disabled / experimental
HTTP transport and profile material remain in the repository, but profiles do not establish a supported HTTP agent workflow. DNS agent listeners are also disabled. The dashboard’s HTTPS API is a separate administrative interface.
OPSEC
The project does not claim invisibility, universal evasion, or production readiness for every OPSEC component. Validate each implementation and platform independently.
Modules
- Sleep masking and memory-related research.
- Process canary checks.
- TLS fingerprint validation.
- Environment guardrails.
- Polymorphic configuration handling.
Presets
Preset definitions and CLI behavior can change independently of the verified enrollment workflow. Read the help for the exact built revision; a preset name is not evidence that a protection is enabled or effective.
Capabilities
Shell
The current tree contains interactive shell work. Fixed-command task tests do not establish complete PTY behavior, resize handling, cancellation, or Windows ConPTY compatibility. Treat these as separate verification items.
Port forwarding
A verified end-to-end TCP tunnel is not claimed by this documentation. A CLI label, interface, or planned feature does not demonstrate a working forwarding path.
File operations
Capability code and task types must be evaluated against their public interfaces, permission checks, and dedicated tests. General lifecycle coverage does not prove every upload, download, path, or error case.
Process list
Process-related capability implementations exist. Validate their output and platform behavior with the corresponding tests rather than inferring support from the capability directory.
Dashboard
The dashboard is an optional frontend to the same server. Disabling its HTTPS listener leaves the administrative gRPC interface available. Production files must exist in the configured dashboard/dist directory.
The browser validates the HTTPS server certificate, then signs in with explicitly provisioned operator web credentials. It does not need the operator private key. The CLI continues to use mTLS.
Web sessions use an opaque, secure, HttpOnly cookie. The server rechecks current permissions, disabled state, and revocation. Mutations require CSRF protection. Restarting the server invalidates in-memory web sessions.
Listeners
A displayed listener record is not proof that a socket is accepting traffic. Confirm runtime status separately. Starting a listener does not enroll or activate an agent.
Agents
Enrollment state and session state represent different things. A prepared record is not an authorized live session, and a reported hostname is not physical-device attestation.
Sessions
Review sessions, tasks, and operations within the current operator role. A rendered button cannot grant permission that the server denies.
| Outcome | Meaning |
|---|---|
| TLS or network failure | The browser has not established a trusted application connection. |
| HTTP 401 | A valid authenticated session is required. |
| HTTP 403 | The request fails permission, CSRF, or route policy. |
Reference
CLI commands
Inspect the exact binary’s help. Server/client local configuration, operations, scope, and enrollment administration are separate command groups. Never assume an older binary on PATH matches the current source tree.
./bin/sentrava-client --help
./bin/sentrava-client operations --help
./bin/sentrava-client agents --help
./bin/sentrava-client generate --helpGenerate options and policy
Local generation packages an existing stock Linux/amd64 mTLS binary with separate configuration and unique credentials. It is not the disabled remote generator.
| Mode | Authorization boundary | Activation |
|---|---|---|
| Target-bound | Exact approved target; allowlist/blocklist apply. | Prepared identity requires explicit activation. |
| Operation-bound | Explicit admin-enabled operation policy; certificate and AgentID bind access. | Issuance can authorize the identity without a second approval. |
Identity-bound access is disabled by default for new and migrated operations. Without the explicit policy, targetless generation must fail before credentials are issued. Hostname remains display metadata in that mode and never expands an allowlist.
Copying it to another machine transfers the ability to present the same key. That proves key possession, not the identity of a physical device. Protect and revoke it accordingly.
API reference
Administrative gRPC definitions are maintained in proto/rpc.proto and related protobuf files. HTTPS handlers apply the server’s route and permission policy. GET /api/health is public and minimal.
Remote GenerateImplant remains unavailable; the authenticated remote builds creation route is disabled. Do not infer API availability from a generated client method alone.
Verification
Use temporary SQLite, PKI, state directories, and loopback addresses. Inspect test setup before execution. Do not point test code at a working installation.
| Evidence | What it establishes | Boundary |
|---|---|---|
| Administrative subprocess | Real server/client administrative flow. | Does not independently prove every agent capability. |
| Tagged mTLS E2E | Enrolled identity and task lifecycle in process. | Agent is not a separate binary process. |
| Generated-package task cycle | One package-to-result scenario and persisted result after restart. | Fixed local task; no exactly-once guarantee. |
| Production dashboard smoke | Real HTTPS backend, browser trust, assets, and covered authorization paths. | Requires Chromium and NSS tools. |
Durable result recovery and result deduplication do not prove that a task executes exactly once. Termination before result persistence remains a distinct failure window.
About this documentation
Sentrava C2 is a team-built security framework. These pages distinguish the supported administrative MVP from experimental code and historical plans.
For revision-specific evidence, review README.md, PLAYBOOK.md, DEFENSE.md, and the tests in the same checkout. Treat projects/PLAN.md as a historical plan, not a release checklist.