MVP / Linux

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.

Authorized security testing only.

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.

ComponentRequirementPurpose
Go1.26.6Server, CLI, and agent builds
C compilerGCC; server CGO enabledSQLite driver
Node + npmCompatible with the committed dashboard manifestsFrontend installation and build
ChromiumAvailable locallyBrowser smoke tests
NSS toolscertutil; Debian/Kali package libnss3-toolsTemporary browser trust stores
curlHTTPS and CA validation enabledReadiness and asset checks
bash · inspect tools
GOTOOLCHAIN=local go version
gcc --version
node --version
npm --version
command -v chromium
command -v certutil
curl --version
No implicit toolchain upgrade.

If 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.

  1. Inspect the checkout

    Record the revision and working-tree state. Read README.md and PLAYBOOK.md from that same revision.

  2. Build the Go components

    Use the required Go version and the committed module files. The Makefile supplies the component-specific CGO settings.

  3. Build the optional dashboard

    The server reads frontend files from a configured asset directory. They are not embedded in the server binary.

bash · isolated checkout
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)"
bash · dashboard assets
cd dashboard
npm ci
npm run build

The 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.

bash · inspect setup interface
./bin/sentrava-server --help
./bin/sentrava-client configure-local --help
./bin/sentrava-client --help

The 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.

Protect the existing installation.

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.

bash · after explicit local setup
# Terminal one
./bin/sentrava-server

# Terminal two
./bin/sentrava-client
ServiceLocal defaultTrust requirement
Operator gRPC127.0.0.1:50051Registered operator mTLS certificate
Dashboard HTTPS127.0.0.1:8080Trusted server CA; configured web access
Agent mTLS127.0.0.1:4433Registered 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.

bash · isolated test fixtures
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

Experimental capabilities are not operational guarantees.

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.

Browser trust and operator login are separate.

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.

OutcomeMeaning
TLS or network failureThe browser has not established a trusted application connection.
HTTP 401A valid authenticated session is required.
HTTP 403The 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.

bash · read-only reference
./bin/sentrava-client --help
./bin/sentrava-client operations --help
./bin/sentrava-client agents --help
./bin/sentrava-client generate --help

Generate 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.

ModeAuthorization boundaryActivation
Target-boundExact approved target; allowlist/blocklist apply.Prepared identity requires explicit activation.
Operation-boundExplicit 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.

A package is a credential-bearing artifact.

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.

Read protobuf definitions

Verification

Use temporary SQLite, PKI, state directories, and loopback addresses. Inspect test setup before execution. Do not point test code at a working installation.

EvidenceWhat it establishesBoundary
Administrative subprocessReal server/client administrative flow.Does not independently prove every agent capability.
Tagged mTLS E2EEnrolled identity and task lifecycle in process.Agent is not a separate binary process.
Generated-package task cycleOne package-to-result scenario and persisted result after restart.Fixed local task; no exactly-once guarantee.
Production dashboard smokeReal 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.