Skip to main content
TruStacks

Product facts

What TruStacks does, and does not do, today.

This page is the canonical list of TruStacks capabilities. Shipped and roadmap items are separated rather than blended, and every entry carries the date it was last checked against the product repository. It exists so anyone evaluating us, human or agent, can ground on one source instead of inferring from marketing pages.

35 shipped7 roadmapOldest entry verified 2026-08-10

Why this page exists. Our own security page once described a shipped capability as roadmap for three months, and published a verification command that could not work, because nothing on the page carried a date or a source. This one does. If you find an entry that is wrong or stale, tell us and we will fix it.

The agent crew

  • The conversational agent an engineer talks to. Reads the repository, the environment profile, and the policy bundle, and routes work to specialists. Never writes code itself.

    Verified 2026-08-10 · SITE_BRIEF.md, refreshed 2026-08-10

  • Emits CI workflow YAML, Dockerfiles, Helm charts, and Argo Application manifests. Reads the platform repository first so customer customizations are preserved rather than overwritten.

    Verified 2026-08-10 · SITE_BRIEF.md, refreshed 2026-08-10

  • Reviews application-repository changes and detects framework and runtime version.

    Verified 2026-08-10 · SITE_BRIEF.md, refreshed 2026-08-10

  • Consults on image scanning, SAST and SCA, secret scanning, and SBOM signing. Returns findings with severity and tool candidates that fit the declared stack. Free at every tier.

    Verified 2026-08-10 · SITE_BRIEF.md, refreshed 2026-08-10

  • Control-readiness findings mapped to the SOC2 Common Criteria (CC1 to CC9), one finding per control id, each with up to three evidence hints naming where in the customer's declared stack the artifact an auditor will ask for comes from. Included from the Developer tier.

    Verified 2026-10-06 · Read 2026-10-06 in trustacks-mvp: runner/.../agents/soc2/models.py (SOC2Finding, SOC2EvidenceHint) and prompts/system.md; tier gate in control-plane/.../billing/enforcement.py (_SOC2_MIN_TIER = DEVELOPER, per ADR-0035). The earlier summary said Enterprise and above, which predated the 2026-08-03 pricing decision.

  • HIPAA, FedRAMP, PCI, ITIL, SRE Specialists

    Roadmap

    Queued. Each ships as a paid Specialist Pack plus a Specialist agent. Not available today.

    Verified 2026-08-10 · SITE_BRIEF.md roadmap section

Languages and frameworks

  • The Code Reviewer detects framework and runtime version across these four, and the runtime is chosen from the project's own target. A project on a runtime past its end of life, such as .NET 8, gets the current default, and the pull request says so in a Runtime support section with the upgrade it needs. New frameworks ship via community packs rather than a release.

    Verified 2026-10-30 · Founder, 2026-10-30: say .NET 10. trustacks-mvp #800 + trustacks-policy#20 (Go 1.27 and .NET 10 defaults, per-major entries from the project's target), shipped in 0.2.17. .NET 8 retired in runner 0.2.18 (mvp #803), ahead of its 2026-11-10 end of life. Public docs reference/knowledge-packs (trustacks-docs#70): "A project that targets a runtime the pack no longer carries (for example .NET 8 after its end of life) gets the pack's default".

Policy

  • A signed Rego policy bundle authored by TruStacks. Free at every tier, non-waivable, and the foundation every proposal is checked against.

    Verified 2026-08-10 · SITE_BRIEF.md

  • Customers author their own rules with the trustacks rule new / test / lint / sign CLI. Overlay rules can only add denials to the constitution's, never remove one, and from runner 0.2.14 the runner rejects an overlay that reaches outside data.overlay. From runner 0.2.17, hosted runners load overlay rules from the platform repo's rules/ directory on its default branch, so a rule is reviewed and merged like any other change and enforced from the next run; if any file fails the size, symlink, confinement or compile check, none of them load and the run continues under the constitution alone.

    Verified 2026-10-30 · Public docs on trustacks-docs main, read 2026-10-30: reference/policy-linter ("Why an overlay cannot weaken the constitution") and reference/constitution (hosted overlays from rules/, runner 0.2.17, trustacks-docs#69).

  • In the product chat, /rule new followed by a plain-English description has the Coordinator propose a rule id and draft the Rego rule and its metadata. The draft is shown for the author to review and copy into their overlay repository; it is not committed or merged by the agent.

    Verified 2026-10-06 · Read in trustacks-mvp source: ui/src/views/Activity.tsx (/rule new prose flow), runner/src/trustacks_runner/routers/rule_draft.py ("No platform writer, no PR"), agents/coordinator/models.py RegoDraft. Authoring is gated to the Team tier per SOFT_LAUNCH_PLAN.md.

  • The constitution's gate gathers every customer overlay rule's denials into its own deny set, so an overlay rule adds a reason a proposed change can be refused alongside the constitution's rules. Each denial carries the rule_id that produced it.

    Verified 2026-10-06 · Read in the public trustacks-policy constitution/proposal.rego (customer overlay aggregator over data.overlay) and ADR-0009. An example overlay rule was run with opa test against that published file on 2026-10-06.

  • Agents propose changes as pull requests. A named human merges. There is no configuration flag that creates an autonomous merge path.

    Verified 2026-08-10 · Core product constraint. SITE_BRIEF.md voice rules.

  • Every proposal is evaluated against the policy before a pull request exists. The verdict, allow or deny with the rule id behind each denial, is recorded as an event. Only an allowed proposal is opened as a pull request, and its body carries a Summary, Blast radius, Rollback, and Rule citations section.

    Verified 2026-10-06 · Read 2026-10-06 in trustacks-mvp: runner/.../routers/plan.py (_enforce_policy emits policy_check with decision + violations, returns before open_pr on deny) and runner/.../git/platform_writer.py (_pr_body section headings).

  • For a chosen time window, and optionally scoped to the services inside an audit boundary, the product maps its recorded change events onto six SOC2 controls (CC5.1, CC6.1, CC6.8, CC7.1, CC8.1, CC9.1) and exports them as JSON or a PDF with a SHA-256 checksum. The human merge is not a TruStacks event; the report directs the auditor to the git provider's history for it. Presents evidence; does not form an audit opinion.

    Verified 2026-10-06 · Read 2026-10-06 in trustacks-mvp: ADR-0022 (Accepted); control-plane/.../audit_reports/templates/soc2/definitions.py (the six ControlSpecs); audit_reports/models.py (service_profile_ids audit boundary, #437). PDF signing is deferred (ADR-0022 A3.1). ADR-0042 sets 30-day Beta retention for the underlying events; the purge is not implemented as of this date.

  • Every gap analysis carries a bronze, silver, or gold tier computed by code rather than by a model. Each row is verified (declared and observed), claimed (declared, unobservable: half credit), disputed (declared and contradicted: no credit), or missing. Gold starts at 90%, so attestation alone cannot reach it. It scores delivery practice against the policy in force; it is not a SOC2 score.

    Verified 2026-10-06 · Read 2026-10-06 in trustacks-mvp: runner/.../policy/maturity.py (STATUS_WEIGHT, DEFAULT_TIER_THRESHOLDS 90/60/0, ceiling_pct from #602). Per-framework scoring (ADR-0016) is Proposed, not built.

  • The constitution's Rego source, its tests, and the four framework packs are readable in the public trustacks-policy repository, which is licensed Apache 2.0. The product still builds the published bundle from its own copy of the same files; moving the build into the public repository is the next phase.

    Verified 2026-10-06 · GitHub API on 2026-10-06: TruStacks/trustacks-policy is public with license Apache-2.0; its README lists the constitution as Apache 2.0 in this repo (content imported by trustacks-policy#4). The published bundle's OCI manifest is annotated org.opencontainers.image.licenses=Apache-2.0.

  • The constitution is published as a standard OPA bundle at ghcr.io/trustacks/policy/constitution, keyless-signed and verifiable with cosign. Its source and test suite are public in trustacks-policy, and the tests run with an unmodified Open Policy Agent binary. No TruStacks software is needed to read or test it.

    Verified 2026-10-23 · Run anonymously on 2026-10-23: cosign verify passed for :latest, 1.4.0 and 1.3.0 against the trustacks-policy publish.yml identity; opa test constitution/ (OPA 1.15.2) on a fresh clone of trustacks-policy main reported PASS 112/112. Inside the unpacked 1.4.0 bundle the same suite reports 111/112: test_stand_in_matches_the_shipped_sidecar needs a file the bundle does not ship, so the site points readers at the source for tests.

  • Customer overlay rules are Rego files under rules/<rule_id>/ in a git repository the customer owns, each with a sibling test file, and change through ordinary commits and pull requests. trustacks rule test runs the stock opa test command over them, so the same tests run without TruStacks.

    Verified 2026-10-06 · Read 2026-10-06 in trustacks-mvp runner/src/trustacks_runner/cli/rule.py (the CLI operates on a local checkout of the customer's overlay repo; `test` shells `opa test`) and samples/overlay/rules/.

  • The CI workflow the crew writes builds and pushes the image but has no write access to the platform repository. When a connected service's main branch advances, TruStacks opens the new image tag as an ordinary proposal, so it passes the same policy check and human merge as any other change. On by default on the hosted service.

    Verified 2026-10-13 · Read 2026-10-13 in trustacks-mvp: ADR-0040 (Accepted); control-plane/.../tag_promotion/loop.py and config.py (code default off); charts/control-plane/values-gke.yaml sets TRUSTACKS_CP_TAG_PROMOTION_ENABLED "true" for hosted; docs/current-state.md records it firing on the dogfood service. ADR-0062 decision 7 applies the same shape to Fargate.

  • Each deployment target is declared with a tier (dev, uat, or prod) and the constitution's production rules key on that tier, so a production target is protected whatever it is called. The tier has no default; a cluster literally named prod is treated as production regardless. On Kubernetes the rule requires manual ArgoCD sync for prod-tier targets; on ECS on Fargate it requires every prod deploy job to name a GitHub environment, which checks the reference only, not that the environment has reviewers.

    Verified 2026-10-13 · Public trustacks-policy constitution/practice/argocd_prod_requires_manual_sync.rego and workflow_prod_deploy_requires_environment.rego, read via the GitHub API 2026-10-13. trustacks-mvp #616 (policy v1.2.0, tier-keyed) and #628 / ADR-0060 Phase A + ADR-0062 decision 4 (live at 0.2.14-rc27 per docs/current-state.md 2026-10-12). ADR-0060 itself is still Proposed.

  • TruStacks evaluates the changes its agent crew proposes. Commits people make directly to the platform repository, and changes made in a cloud console, are not evaluated by TruStacks; they are governed by the customer's own branch protection and access controls. Delivery files in the service repository are audited separately, whoever wrote them (see the repo audit), but that audit reports rather than blocks.

    Verified 2026-10-13 · trustacks-mvp docs/handoff-docs-2026-10-07.md section 8 lists the any-author PR gate as in progress and not to be documented; runner/.../routers/plan.py evaluates policy on crew proposals only.

  • During every analysis the runner evaluates the delivery files already committed to the customer's service repository (Dockerfiles, GitHub Actions workflows, ECS task definitions) against the same signed constitution and overlay that gate the crew's proposals, whoever wrote them, and raises each denial as a finding naming the rule and the file. It is an audit, not a gate: it never blocks a merge. Only rules a repository's own file can judge are reported, such as non-root Dockerfiles, pinned action versions, and the ECS task-definition rules.

    Verified 2026-10-27 · Read 2026-10-27 in trustacks-mvp: ADR-0067 (Accepted 2026-10-20) decision 2; runner/src/trustacks_runner/policy/repo_audit.py (#703, shipped in 0.2.15-rc8, no feature flag); trustacks-policy constitution/practice/*.rego rules declaring the repo subject.

  • Findings from tools the customer already runs land on one Signals screen: Dependabot, code-scanning and secret-scanning alerts and CI runs read from GitHub by the runner with a read-only token, ArgoCD deploy status, or any scanner's SARIF upload. A fix is proposed through the same policy gate and human approval as any other change. TruStacks is not a scanner and never auto-merges a fix.

    Verified 2026-10-27 · trustacks-docs guide/signals (Sources table) and workshops/signals-governed-fix; trustacks-mvp docs/current-state.md 2026-10-19 hosted walkthrough (SARIF finding, triage, Propose a fix, allowed PR) and UI rc3 (#666).

  • Gate every pull request, whoever wrote it

    Shipped

    Every CI workflow TruStacks writes, GitHub Actions or Azure Pipelines, starts with a policy-check job. It verifies the signed bundle, then evaluates the pull request's delivery files against it, whether a person or an agent wrote them. It reports by default; turn on enforce (Azure: enforcePolicy) and make it a required check, and a violation blocks the merge.

    Verified 2026-10-30 · Founder, 2026-10-30: flip to shipped. trustacks-mvp #795 + trustacks-policy#19 (ADR-0067), shipping in runner 0.2.17 / policy 1.7.0: GitHub + Azure, verified bundle, fail-closed, report-only default, enforce / enforcePolicy input.

  • Time-bound policy waivers

    Roadmap

    A way to grant an exception to a rule with an owner and an expiry. Not built. The constitution's rules are non-waivable by design.

    Verified 2026-10-13 · No waiver code found in trustacks-mvp 2026-10-13 (grep across runner, policy, control-plane); docs/handoff-docs-2026-10-07.md section 8 lists waivers as not shipped.

  • Standalone Specialist Packs

    Roadmap

    Paid subscribable Rego bundles for regulatory and specialty domains, purchasable independently of the matching agent. Not available today.

    Verified 2026-08-10 · SITE_BRIEF.md roadmap section, Phase 5.4

Security and supply chain

  • Every published image and the constitution policy bundle are signed via Sigstore keyless OIDC against the release workflow's identity. There is no long-lived signing key, because there is no key. Each release also lands in the Rekor public transparency log.

    Verified 2026-10-23 · Re-verified live 2026-10-23 with cosign v3.0.6 and no registry credentials: runner :latest signed by trustacks-mvp publish-images.yml; policy/constitution :latest, 1.4.0 and 1.3.0 signed by the public trustacks-policy repo's publish.yml (the bundle moved there with the policy split; the old trustacks-mvp publish-policy.yml identity only matches 0.x bundles). First verified 2026-08-10.

  • A Software Bill of Materials is attached to each image manifest at build time and enumerates every vendored dependency. Inspectable without asking us for anything.

    Verified 2026-10-06 · Re-verified live 2026-10-06: docker buildx imagetools inspect returns SPDX 2.3 (syft-v1.42.3) for linux/amd64 and linux/arm64 on runner, control-plane, and ui :latest (v0.2.13), referenced by digest from the signed index. First verified 2026-08-10.

  • An in-toto SLSA build-provenance attestation is attached per platform, carrying the source revision, build type, and build parameters, covered by the same signature as the image.

    Verified 2026-10-06 · Re-verified live 2026-10-06 against runner:latest (v0.2.13): provenance revision matches the signing certificate's githubWorkflowSha. A published SLSA *level* is pending mvp confirmation (see MVP_HANDOFF.md request 1).

  • Agents open pull requests against a separate platform repository. The customer's ArgoCD or Flux deploys what their people merged. Credentials never leave the customer environment.

    Verified 2026-08-10 · SITE_BRIEF.md

  • TruStacks SOC2 (our own)

    Roadmap

    TruStacks does not hold its own SOC2 report yet. The SOC2 Specialist agent helps customers with theirs; that is a different thing and we will not blur the two.

    Verified 2026-08-10 · GTM_PLAN_10M.md gating dependency 1

Where it runs

  • The crew works against GitHub repositories through a GitHub App and writes CI as GitHub Actions workflows. For Kubernetes targets it emits Helm charts or Kustomize overlays, plus ArgoCD Application manifests. For ECS on Fargate (Beta) it emits a task definition and a GitHub Actions deploy workflow that updates a service the customer already runs; it does not create ECS services, networking, or IAM. Other CI and GitOps tools, Flux included, can be declared in the environment profile, which grounds the crew's recommendations, but the crew does not write configuration for them. Azure Repos and Azure Pipelines are their own entry.

    Verified 2026-10-30 · Fargate: trustacks-mvp #628 / ADR-0062 (live at 0.2.14-rc27 per docs/current-state.md 2026-10-12) and trustacks-policy constitution/ (proposal.has_ecs_task_definition, proposal.has_ecs_deploy_workflow, practice.ecs_task_*). Read 2026-10-06 in trustacks-mvp: ADR-0018 (GitHub App auth) and ADR-0044 (hosted onboarding creates GitHub App installations only); env_profile/models.py declares github_actions, azure_devops, gitlab_ci, tekton, jenkins and argocd, flux as providers; no GitLab CI emission found in the runner's agents. CI runtime packs for other CI tools are post-launch per ADR-0013.

  • Azure Repos connects as a git host with a personal access token that is delivered sealed to the customer's runner and never stored by TruStacks; the runner reads service repos and opens pull requests in the platform repo, and a human merges. When the Stack file names Azure Pipelines as the primary CI, the crew writes an extends template and a caller for each service, with built-in tasks at full versions and containers pinned by digest, checked against the policy before the pull request opens. Azure Repos with GitHub Actions, or GitHub with Azure Pipelines, also works. In Preview: it works end to end in TruStacks' own tests and has not yet been validated in a live customer organization. Azure DevOps Server (on-premises) is not supported.

    Verified 2026-10-30 · Preview label: mvp session 2026-10-30 (runner 0.2.17), use "Preview", never GA. Runner v0.2.16 tag on trustacks-mvp. Public docs on trustacks-docs main, read 2026-10-30: installation/azure-devops, reference/azure-pipelines, reference/connect-a-repo, reference/environment-profile (ci_cd_platform accepts azure_pipelines).

  • The deploy workflow the crew writes for ECS on Fargate (Beta) runs when the platform repository's main branch changes and refuses to deploy any commit that is not main's current head. The target account, region, roles, cluster, and service are a committed file, so retargeting is a reviewed change, and rollback is a revert pull request. ECS has no continuous reconciliation: an out-of-band service update is not detected until the next merge.

    Verified 2026-10-13 · Read 2026-10-13 in trustacks-mvp: packs/target_kinds/ecs-fargate.yaml (push to main, "Refuse to deploy anything but the head of main" step, committed deploy-target.json binding) and ADR-0062 decision 3 (rollback by revert; drift check is a follow-up).

  • Promoting one change across environments

    Roadmap

    Carrying a single reviewed change from staging to production as one tracked promotion. Not built: a proposal is planned for one deployment target at a time today.

    Verified 2026-10-13 · Read 2026-10-13 in trustacks-mvp: control-plane/.../routers/proposals.py dispatches application.target_clusters[0] only; ADR-0060 defers per-target dispatch; promotion_after is forward-compat only (applications/models.py).

  • TruStacks emits configuration; the customer runs it on their Kubernetes, their ArgoCD or Flux, their CI, their registry. Source code does not leave the customer environment.

    Verified 2026-08-10 · SITE_BRIEF.md

  • OpenShift as a Kubernetes distribution

    Shipped

    A Kubernetes target can be declared as OpenShift. The runner installs under the default restricted-v2 SCC with no custom SCC or anyuid grant. Emitted images and Deployments run under an arbitrary UID, ArgoCD Applications land in openshift-gitops, the workload namespace they create carries the managed-by label, and exposure is a plain Ingress that the OpenShift router turns into an HTTPS-redirecting Route. The same artifacts run on any other Kubernetes. Not yet run on a live OpenShift cluster.

    Verified 2026-10-30 · mvp ADR-0070 and handoff 2026-10-28-www-openshift-blog.md; mvp #760, #764 and #767 merged, shipped in runner 0.2.15 (mvp session, 2026-10-30); public docs installation/openshift; trustacks-policy#13 (real docker builds, run as UID 1000770000 in group 0). Founder 2026-10-30: the live OpenShift run hasn't happened yet.

  • Cluster Operator with CRDs

    Roadmap

    Phase 5, post-Beta. Not available today.

    Verified 2026-08-10 · SITE_BRIEF.md roadmap section

  • A community server for TruStacks users. Joining is by approval rather than open to the public, and Discord is where Developer-tier support happens.

    Verified 2026-09-23 · Founder-supplied invite, 2026-09-23. Guild `trustacks`, non-expiring invite, MEMBER_VERIFICATION_MANUAL_APPROVAL confirmed against the Discord API the day it was published.

Commercial

  • Beta pricing: the Developer tier is $24/month flat: 5 seats, 5 connected services, the baseline crew, the SOC 2 specialist agent, and Discord support. Not per-seat; monthly billing. Seat and service limits are a documented soft cap during Beta, not enforced by the product. Tiers above Developer are not for sale yet. The hosted Beta is open to the first 50 teams through a Beta code, which skips the card at checkout and starts a 45-day free trial. After it, a card on file is billed the plan price; with no card the Beta ends, nothing is charged, and the workspace and its data stay readable while new work pauses until the team subscribes. Without a code, signup is the Developer tier through Stripe Checkout.

    Verified 2026-10-27 · Founder 2026-10-27: flat for the Beta, labelled as Beta pricing; post-Beta pricing (possibly per seat) not set. Beta pricing decision of 2026-08-03 (trustacks-mvp ADR-0035 + decision log); entitlements shipped in mvp PR #328. Beta code and live Checkout: trustacks-mvp #709 and 6f7be83 (2026-10-21: live $24/mo Stripe price, signup_mode closed so the free Register trial is shut, Beta code max_redemptions 50). 45-day Beta: trustacks-mvp #755, live in 0.2.15-rc23 on 2026-10-27 (45-day Stripe trial; day-46 behaviour per mvp handoff 2026-10-27-www-beta-45-days). Superseded trial note: read 2026-10-13 in trustacks-docs getting-started/hosted-quickstart (#41: Register creates a 30-day trial; the card form is shown only when self-serve billing is enabled) and mvp docs/current-state.md 2026-10-12 (trials enforced with 402 on expiry; billing not live).

  • Customers supply their own Anthropic or OpenRouter key and pay the provider directly. TruStacks does not resell inference. During the Beta, TruStacks provides an Anthropic key at no charge, requested in the TruStacks Discord, which stops working when the Beta ends. Either way the runner calls the provider directly from the customer's cluster, so LLM payloads never transit the TruStacks control plane.

    Verified 2026-10-30 · Founder ruling 2026-10-30: as a product, customers bring their own key; for the Beta, TruStacks provides one via Discord. Public docs reference/llm-provider ("Beta: the model is on us", trustacks-docs#65). Original BYO ruling 2026-08-11.

  • TruStacks Insights (DORA and SPACE telemetry)

    Roadmap

    Paid add-on, Phase 6, post-GA. Not available today.

    Verified 2026-08-10 · SITE_BRIEF.md roadmap section

Checking rather than reading?

Everything on this page is verifiable. Our images and the constitution bundle are signed and carry build provenance and an SBOM; the commands are on the security page. Agents and crawlers can start from /llms.txt.

This page says what is true today. For how it got that way (what we decided, when, and what we turned down), see the decision record.