Skip to main content
Skip to main content
Trust Center

Trooth

Trooth is the trust network for AI and software companies: a company connects its systems, Trooth witnesses what is true of them on a schedule, and buyers read the record with its sources and timestamps. This page is Trooth's own record, held to the same standard Trooth asks of every company on the Network. Trooth, LLC is a Florida limited liability company (L25000561494) based in Miami.

Controls

Updated September 18, 2026

Infrastructure Security

ControlStatus
Encryption in transit enforced

Every connection to trooth.co and api.trooth.co uses TLS 1.2 or later. HTTP Strict Transport Security is sent on every response with a two-year max-age, includeSubDomains and preload, and plain HTTP is not served.

Evidence: next.config.mjs security headers; the response headers of https://trooth.co, readable by anyone.

Attested
Encryption at rest

Customer data is stored in a managed PostgreSQL database (Neon, on AWS us-east-1) that encrypts every volume and backup at rest with AES-256. Trooth's own nightly export of that database is encrypted with AES-256 before it leaves the runner.

Evidence: .github/workflows/db-backup.yml (gpg --symmetric --cipher-algo AES256); Neon's published security documentation.

Attested
Tenant data is separated by row-level security in the database

Every table that holds tenant data has row-level security enabled with a policy, and the application connects as a runtime role that cannot bypass it. A build gate fails the deploy if a table is added without a policy.

Evidence: db/rls.sql; scripts/check-rls-coverage.mjs and scripts/check-db-roles.mjs, both in the verify:deploy gate list.

Attested
Tenant isolation is tested against a live deployment with real sessions

A harness signs in as three real accounts in three workspaces and sends each one foreign and forged identifiers into every covered surface, asserting a refusal each time. It ran green against a production-configured deployment on 2026-09-17, after three earlier runs each found something that was fixed the same day.

Evidence: tests/tenant-isolation.api.test.mjs; .github/workflows/e2e-isolation.yml, run #5.

Attested
Secrets are held in the platform secret store, never in source

Credentials live in Vercel and Cloudflare encrypted environment configuration. A secret scan runs on every commit in the build, and TruffleHog runs on every push in a separate workflow.

Evidence: scripts/check-secrets.mjs in verify:deploy; .github/workflows/security-scan.yml.

Attested
Production is deployed only from the main branch, through the gates

The only path to production is a GitHub Actions workflow that runs 152 build gates on the commit, compiles it, and uploads the prebuilt output. Direct deploys from a laptop are refused by the workflow's own checks, and the platform's automatic branch deploys are turned off for production.

Evidence: .github/workflows/deploy.yml; vercel.json (git.deploymentEnabled.main: false).

Attested
Nightly encrypted database backups, kept for 30 days

The production database is exported every night, encrypted with a passphrase the workflow refuses to run without, and retained for 30 days. The workflow fails rather than upload an unencrypted copy.

Evidence: .github/workflows/db-backup.yml; run #47 on 2026-09-18.

Attested
Restore from backup is rehearsed

A separate workflow restores a backup into a fresh database and checks that the tables and row counts come back. It ran successfully on 2026-09-10 and is scheduled monthly.

Evidence: .github/workflows/db-restore-rehearsal.yml; run #1 on 2026-09-10.

Attested
Production is separated from preview and development

Preview deployments run on their own hosts with their own configuration and never receive the production domain. The database used for the live row-level-security proof in the build is a throwaway server on the runner, not production.

Evidence: .github/workflows/deploy.yml (the PostgreSQL service and the production-host refusal).

Attested
Availability is monitored from outside and published

An external monitor checks trooth.co, api.trooth.co and the health route on a schedule, a second monitor runs in GitHub Actions, and the result is published on a public status page with incident history and email subscriptions.

Evidence: .github/workflows/uptime.yml; https://trooth.co/status.

Attested

Organizational Security

ControlStatus
Security policies established and reviewed

Trooth publishes a written information security policy set of nineteen policies covering information security, access control, passwords and authentication, data classification, encryption, secure development, vulnerability management, logging and monitoring, incident response, business continuity, backup and retention, asset, risk and vendor management, acceptable use, personnel, physical security, data residency and AI governance. Each policy is owned by the founder, dated, public, and carries a six-month review date.

Evidence: Nineteen published policies, POL-01 to POL-19, effective 2026-09-18, next review 2027-03-18, on the Resources tab under Policies. They supersede the signed set of 2026-05-25.

Attested
Security roles and responsibilities defined

The founder owns every security decision, approves policy changes and holds the only production write access. Anyone else granted access signs a confidentiality and acceptable-use agreement first, and every vendor that processes Trooth data signs a data processing agreement.

Evidence: Information Security Policy, section 4; Access Control Policy, section 4.

Attested
Inventory of systems and data assets maintained

Trooth keeps a register of every external service it depends on, an inventory of information assets by classification, and generated inventories of the application's routes, components and public files that the build regenerates and compares on every deploy.

Evidence: docs/rebuild-package/EXTERNAL_SERVICE_REGISTER.md and SECURITY_ASSET_INVENTORY.md; check:manifests, check:components and check:assets in verify:deploy.

Attested
Sub-processors are inventoried, published and announced ahead of change

Every third party that processes customer personal data is listed publicly with its purpose and processing region. Customers receive 30 days' notice of a new sub-processor and may object for reasonable cause.

Evidence: https://trooth.co/subprocessors; Data Processing Addendum; Vendor and Third-Party Risk Management Policy.

Attested
Risk register maintained

Identified risks are recorded with likelihood, impact, the control that addresses each one, and the evidence for that control. The register is re-read whenever the gate list or the known-limitations record changes.

Evidence: docs/rebuild-package/RISK_REGISTER.md, checked for staleness by check:docs on every build.

Attested
Confidentiality agreement required before any system access

No contractor or agent receives access to Trooth systems before signing a confidentiality and acceptable-use agreement. As of the date on this page Trooth has no employees or contractors with system access; the rule applies to the first one.

Evidence: Information Security Policy, section 4; Acceptable Use Policy (internal).

Attested
Security awareness training completed annually

Every person with production access completes security awareness training within thirty days of receiving access and annually after that, with the completion recorded.

Becomes attested when: Becomes attested when the founder's first completion record exists. Target: 2026-10-31.

Planned, not yet in place
Quarterly access reviews performed

Human accounts, service accounts, sub-processor access and issued tokens are reviewed every 90 days and the review is recorded.

Becomes attested when: The policy requires it; the first recorded review has not been performed. Becomes attested when the first review record exists. Target: 2026-10-31.

Planned, not yet in place
Personnel screening before production access

Background checks are performed on new hires before they receive production access, where lawful in the hire's jurisdiction.

Becomes attested when: Trooth has no employees. The policy and the process are written for the first hire and become attested with it.

Planned, not yet in place

Internal Security Procedures

ControlStatus
Incident response plan established

Incidents are classified into four severities with response times from fifteen minutes to twenty-four hours. The plan covers detection, acknowledgment, containment, eradication, recovery, communication on the status page and by email, and a written post-mortem within seven days for the highest severity.

Evidence: Incident Response Policy; docs/rebuild-package/INCIDENT_RUNBOOK.md; the incident history at https://trooth.co/status.

Attested
Breach notification within 72 hours

If personal data is compromised, affected customers and, where required, supervisory authorities are notified within 72 hours of Trooth becoming aware, as the Data Processing Addendum commits.

Evidence: Data Processing Addendum at https://trooth.co/dpa; Incident Response Policy, section 5.

Attested
Business continuity and disaster recovery plan established

Recovery objectives are set at four hours to restore service and twenty-four hours of maximum data loss, matched to the nightly backup. The plan names the failure scenarios, the recovery path for each, and what happens if the founder is unavailable.

Evidence: Business Continuity Statement at https://trooth.co/continuity; docs/rebuild-package/DISASTER_RECOVERY_PLAN.md and BUSINESS_CONTINUITY_PLAN.md.

Attested
Every production change passes automated gates before it is deployed

A change reaches production only as a commit on the main branch that has passed the type check, the lint, the unit suites and the 152 gates that check headers, authorization, database roles, row-level security, secrets, request validation, rate limits, accessibility, documentation and more. A failing gate means nothing is uploaded.

Evidence: package.json gates array; scripts/run-gates.mjs; .github/workflows/deploy.yml.

Attested
Vulnerability management with remediation timelines

Dependencies are watched by Dependabot and audited for high and critical advisories on every push; static analysis runs on every push; and a published policy sets remediation timelines of 24 hours for critical findings in production, 7 days for high, 30 for medium and 90 for low.

Evidence: .github/dependabot.yml; .github/workflows/security-scan.yml (pnpm audit, TruffleHog, semgrep); Vulnerability Management Policy.

Attested
Vulnerability disclosure policy with safe harbor published

Researchers can report to security@trooth.co under a published policy that welcomes good-faith research and states the safe harbor. The address and the policy are advertised in the site's security.txt.

Evidence: https://trooth.co/security/vulnerability-disclosure-policy; https://trooth.co/.well-known/security.txt.

Attested
Application errors and security events are logged and reviewed

Application errors are captured with every event scrubbed of personal data before it leaves the server, and material actions in the product land in an append-only audit ledger whose entries are hash-linked so that a removed or altered row is detectable.

Evidence: instrumentation.ts and lib/sentry-scrub.ts; check:ledger and check:observability in verify:deploy.

Attested
Physical security of data centers is inherited from the providers that operate them

Trooth operates no physical infrastructure. Its data is held in facilities operated by Amazon Web Services (through Neon and Vercel) and Cloudflare, each of which publishes independent audit reports for the physical and environmental controls of its facilities.

Evidence: Sub-processor list; Shared Responsibility Model (Resources tab).

Attested
Incident response plan tested

An end-to-end incident drill is run at least annually and documented, exercising detection, the status page, customer communication and the post-mortem.

Becomes attested when: The policy schedules the first drill for January 2027. Becomes attested when the drill record exists; the founder intends to bring it forward to 2026-10.

Planned, not yet in place

AI Security & Compliance

ControlStatus
AI systems are inventoried and described in a published fact sheet

Every AI-assisted feature Trooth operates is named in a published model card with its intended use, its users, its inputs and outputs, its approach and its limitations.

Evidence: https://trooth.co/model-card; AI System Fact Sheet (Resources tab).

Attested
AI use policy published

A public policy states where generative AI is and is not used in the product, which decisions are always made by a person, and that Trooth does not use customer content to train models.

Evidence: https://trooth.co/ai-policy; https://trooth.co/ai-disclosure.

Attested
Customer data is not used to train models

Trooth does not use customer content, connected-integration data or account information to train foundation models, and does not sell or share it so that others can. Pages carry noai and noimageai robots directives.

Evidence: Privacy Policy, https://trooth.co/privacy; AI Disclosure, section on automated access.

Attested
EU AI Act role and risk classification documented

Trooth has classified each AI-assisted feature against the EU AI Act's risk categories and documented its role as a provider, the applicable transparency obligations and how each is met.

Evidence: EU AI Act Transparency and Risk Classification (Resources tab); EU AI Act statement.

Attested
EU AI Pact signatory

Trooth signed the European Commission's AI Pact commitments ahead of the AI Act's application, and the Commission lists Trooth on its public roster of signatories.

Evidence: https://digital-strategy.ec.europa.eu/en/policies/ai-pact; EU AI Pact commitments (Resources tab).

Attested
AI-generated content is labelled where it appears

A drafted answer, a suggested mapping or any other AI-assisted output is labelled as such in the product, and an observation Trooth witnessed is never labelled as an AI draft.

Evidence: AI Disclosure, sections 2 and 3; test:ai-features in verify:deploy.

Attested
A person makes every decision that binds the company or a customer

AI-assisted features draft; they do not send, publish, sign, approve or delete. Every action of those kinds requires a person's explicit confirmation in the product.

Evidence: AI Disclosure, section on decisions always made by a person; test:publish-authorization and test:approval-authority in verify:deploy.

Attested
Content from outside the company is isolated from instructions

Text that arrives from a third party, such as a questionnaire, a page Trooth crawled or a document a company uploaded, is treated as data and never as an instruction to an AI-assisted feature. A build gate keeps the isolation in place.

Evidence: lib/untrusted-content.ts; check:untrusted-content and test:untrusted-content in verify:deploy.

Attested
AI risk management aligned to the NIST AI Risk Management Framework

Trooth maps its AI governance activities to the four functions of the NIST AI RMF and publishes the mapping with the gaps it still has.

Evidence: NIST AI RMF conformance statement (Resources tab).

Attested
AI features run on infrastructure whose terms exclude inputs and outputs from training

Trooth's AI-assisted features run open-weight models on Cloudflare Workers AI, inside the same network that serves the product, under terms that exclude Trooth's inputs and outputs from model training. No customer content is sent to a consumer AI service. Cloudflare is on the sub-processor list.

Evidence: Sub-processor list (Cloudflare, Inc.); AI System Fact Sheet; Cloudflare's published Workers AI data-use terms.

Attested

Product Security

ControlStatus
Multi-factor authentication available to every account

Authenticator-app TOTP is built in and free for every account, including buyer accounts. It is a property of having a Trooth login, never a paid feature.

Evidence: Settings, Security, in the product; tests/auth-journey.test.mjs.

Attested
Passwords stored as salted hashes with rising work factors

Passwords are stored as salted PBKDF2 hashes and upgraded transparently as work factors rise. Sign-in and signup are hardened against account enumeration with equalised timing and lockout on repeated failures.

Evidence: Security Overview (Resources tab); the sign-in behaviour is observable from outside on every attempt.

Attested
Sessions in httpOnly, secure cookies with a fixed expiry

Sessions live in httpOnly, secure, same-site cookies with a 30-day absolute expiry. Logout revokes the session upstream and reports a failure rather than swallowing it.

Evidence: lib/session-read.ts; docs/rebuild-package/DEFENSIVE_ASSESSMENT.md, section 3.

Attested
API keys shown once and stored only as hashes

An API key is displayed once at creation, stored only as a SHA-256 hash, scoped to its workspace, and revocable at any time.

Evidence: Security Overview (Resources tab); API Terms at https://trooth.co/api-terms.

Attested
Multi-factor recovery codes

An account that has turned on multi-factor authentication can generate single-use recovery codes to regain access if the authenticator is lost.

Becomes attested when: Not implemented; the authentication service offers no recovery or backup codes and tests/auth-journey.test.mjs asserts the absence. Becomes attested when the feature ships.

Planned, not yet in place
Request bodies validated against schemas

Every credential-free mutating route parses its body against a declared schema and reads no field it does not declare. A build gate fails the deploy when a route is added without one.

Evidence: lib/api-schemas.ts; check:request-validation in verify:deploy.

Attested
Content Security Policy and security headers enforced and gated

A content security policy, strict transport security, frame, content-type and referrer policies are sent on every response, and a build gate compares the policy against the source on every deploy.

Evidence: next.config.mjs; check:csp in verify:deploy.

Attested
Rate limiting and bot protection on public surfaces

Unauthenticated and bare-token mutations are rate limited per client, failing closed where the work costs money. Public forms are protected by Cloudflare Turnstile, and a submission that fails the check is rejected before anything else happens.

Evidence: lib/rate-limit.ts and lib/turnstile.ts; check:rate-limit and check:turnstile in verify:deploy.

Attested
Signed, hash-linked audit ledger

Every material action in the product is recorded in an append-only ledger whose entries are hash-linked, so that a removed or altered entry breaks the chain and is detectable.

Evidence: check:ledger in verify:deploy; the Security Overview (Resources tab).

Attested
Authorization derived from the session, never from the request body

Routes that touch tenant data derive the owner from the session, and a build gate checks every route for an authorization call. Function-level and property-level authorization are enforced on the surfaces the assessment names.

Evidence: check:authz in verify:deploy; docs/rebuild-package/DEFENSIVE_ASSESSMENT.md, section 3.

Attested
1 to 10 of 13 results

Data and Privacy

ControlStatus
Privacy policy published and maintained

The privacy policy states what is collected, why, for how long, who processes it, and how a person exercises their rights. It carries its effective date and is reviewed when the product or the law changes.

Evidence: https://trooth.co/privacy.

Attested
Data processing addendum available

A data processing addendum with the standard contractual clauses is published and incorporated into customer terms without negotiation.

Evidence: https://trooth.co/dpa.

Attested
Sub-processor list published with 30 days' notice of change

The list of third parties that process customer personal data is public, with each provider's purpose and processing region, and changes are announced 30 days in advance.

Evidence: https://trooth.co/subprocessors; the Subprocessors tab of this page reads from the same document.

Attested
Data retention and disposal schedule published

Each kind of data has a maximum retention period and a stated disposal event. Working data is removed 30 days after an account closes; backups age out on a 30-day rolling window.

Evidence: https://trooth.co/retention; Data Retention and Disposal Policy.

Attested
Data subject requests handled within 30 days

Access, correction, portability and erasure requests are accepted through a published procedure and completed within 30 days. Erasure is exercised against the live database and tested in the build.

Evidence: Data Subject Rights Request Procedure (Resources tab); test:privacy-request and test:erasure-live in verify:deploy.

Attested
Data classification policy established

Data is classified as public, internal, confidential or restricted, with handling requirements for each level covering encryption, access, logging and where the most sensitive material may be stored.

Evidence: POL-04 Data Classification and Handling Policy, published on the Resources tab.

Attested
No payment card data is collected or stored

Trooth takes no payment and holds no card data. No payment processor is a sub-processor.

Evidence: Sub-processor list change log, 2026-09-04.

Attested
Personal information is not sold

Trooth does not sell personal information and does not use the content of connected data for advertising.

Evidence: Privacy Policy; CCPA statement (Resources tab).

Attested
Data residency documented

Primary customer data is stored in the United States (AWS us-east-1, through Neon). Edge compute and content delivery run globally through Cloudflare and Vercel. Each sub-processor's processing region is published.

Evidence: https://trooth.co/subprocessors.

Attested
1 to 10 of 12 results