Inventory that knows ownership
Every credential points back to an owner, tenant, source, expiry, risk, and operational state instead of living as an orphaned blob.
Discover, issue, deploy, rotate, revoke, and retire every machine credential from one self-hosted control plane. Private keys stay in an isolated signer process. Audit stays in your infrastructure.
Certificates, SSH trust, service tokens, API keys, and workload identities usually sprawl across teams and tools. trstctl treats them as one lifecycle with one inventory and one audit trail.
Every credential points back to an owner, tenant, source, expiry, risk, and operational state instead of living as an orphaned blob.
The control plane orchestrates. The signer process holds keys and signs over a constrained channel. That separation is the product, not a deployment detail.
See where a credential is used, what it can reach, which systems depend on it, and what breaks if it expires or is revoked.
The lifecycle is explicit: every state change emits an event, every external action goes through an outbox, and every retry is idempotent.
Agents and connectors find certificates, SSH trust, keys, secrets, and workload identities.
Profiles, policies, approvals, and signer-backed CA custody turn requests into credentials.
Connectors write to the target only after intent is recorded durably in the outbox.
Policy-driven renewal keeps expiry from becoming an outage, with retry-safe operations.
Revocation, decommission, and audit close the loop instead of leaving stale trust behind.
Tenant isolation, event-sourced state, signer separation, memory discipline, and backpressure are first-order architecture constraints.
Every tenant-scoped query is backed by PostgreSQL row-level security, not a best-effort application filter.
Read models and audit trails are projections of immutable events, so state can be rebuilt and inspected.
Bounded worker pools keep discovery, connectors, policy, API traffic, and external calls from starving one another.
trstctl is for teams that need automation without losing custody, blast-radius control, or auditability.
Signing, parsing, certificate handling, and secret material stay behind the dedicated internal crypto boundary.
Events are immutable; projections can be rebuilt. The audit trail is not a separate story from product state.
Database policy enforces the tenant line, so a missed condition is a test failure instead of a customer incident.
External calls are durable intents first, worker actions second. Retry semantics are built into the write path.
Run a local evaluation stack, deploy with Docker or Helm, then connect agents and CA/deployment integrations as your environment grows.
Start with discovery. Keep going until issuance, rotation, revocation, and audit are boring.