Privacy Policy
Last updated: October 6, 2026 · Applies to VITNA and all COSTRINITY products
- ✓Cloud storage is the default. Your agents send events and checks to our API, and we store the events and a record of each check.
- ✓With no credentials set, the MCP package creates a trial account. Versions before 0.5.1 send your machine's hostname as part of the agent name; 0.5.1 and later do not.
- ✓From October 19, 2026, guard mode (0.5.1 and later) tells us that it is in use, and we note that once on your account. VITNA_GUARD_NO_ACTIVATION=1 turns it off.
- ✓A check stores its verdict, not your raw input. Guard mode with a policy file is the exception: we store each call's tool name and target address, and for a held call up to 400 characters of its arguments, with detected secrets replaced.
- ✓Rate limits are enforced server-side, so we do hold per-agent request counts.
- ✓Security records, such as refused keys, sign-ins and guard sessions opened with a policy file, keep the IP address and user agent, and are kept indefinitely.
- ✓We never sell your data or share it with third parties for their own purposes.
- ✓Want zero cloud storage of events? VITNA Desktop keeps events, decisions and holds on your device. It still checks our server for updates, and contacts it to activate a licence key if you enter one.
1. Who We Are
VITNA is a product of COSTRINITY INC. ("COSTRINITY"). We build developer tools for AI agent operators. Our registered contact is hello@costrinity.xyz.
2a. Checker result emails (optional)
The two free checkers at /article-50 and /ai-act-december-2026 store nothing that identifies you by default. You can run either one start to finish and share the result link. When you finish a check, the page sends one anonymous count of which obligations or deadlines your answers triggered, and we store it with no email address, no IP address and no account attached. A click through to booking is counted the same way.
If you tick the box and submit your address at the result step, we store exactly this: your email address, which checker you ran, a short summary of the result you were shown, the obligation identifiers your answers triggered, the fact that you consented, the timestamp, and when each follow-up email went out. If you later book a call through our booking page with the same address, we also note when you booked, and the follow-up emails stop (section 2b). We do not store your individual answers, and we do not store an IP address against it.
We use it to send you that result, and two short follow-up emails over the following week. Then the sequence stops on its own. Every one of those emails carries a one-click unsubscribe link. Using it puts your address on a do-not-email list, which stops every checker email, including for a checker you have not run yet. We keep your address on that list so the block holds, and the page you land on offers an undo.
Retention: we keep the record until you ask us to delete it. Unsubscribing stops the emails but does not delete the record. To delete it at any time, write to hello@costrinity.xyz and we will remove it.
2b. Booking a call or starting an assessment
Booking a call through our booking page, which runs on Cal.com, creates an assessment engagement record. From the booking notice Cal.com sends us, we store the name and email address you entered there, the company name if you gave one, the booking's id and the call time, with the time you booked and, unless it belongs to a free email service, the domain of your email address. Starting an assessment with the form at /engage/start creates the same record from the company, name and email address you type. We use the address to send you the scope agreement and the intake questionnaire, and up to two reminders if the deposit is still unpaid after you accept the agreement. These emails go out from our Google Workspace mailbox, through Google's Gmail service. Cal.com handles the booking itself under its own privacy policy.
If you accept the scope agreement, we also store your company's legal name and address, the name and title you sign with, the exact text you accepted, the time, and your IP address and user agent, as evidence of who accepted it. Answers you submit in the intake questionnaire are stored with the engagement. Each payment for the engagement is requested with a PayPal invoice: we send PayPal the contact name, email address and company name on the engagement, and PayPal emails you the invoice under its own privacy policy. The scope agreement sets out how we handle the material of the engagement itself, and for how long. The engagement record is not deleted automatically.
2. What Data We Collect
3. Exactly What Is Sent and Stored
This section lists what the API, the MCP package (@costrinity/vitna-compliance-mcp) and its guard mode send to us, and what we keep.
4. How We Use Your Data
We use account data to authenticate you, bill the plan you signed up for, reach you about security or material policy updates, send account emails (a welcome, a notice when you reach a plan limit, and a warning before events are purged, which you can unsubscribe from; your licence key after a purchase; and the email an alert rule you set on the dashboard sends when it fires, to the address on that rule), and answer support requests you start. We use agent event and decision data to operate the product for you: running the checks you call, enforcing plan and rate limits, producing your evidence exports, and debugging faults you report. We also count totals, such as active agents and events, for our public stats; those totals name no account. We do not use it to train models, we do not sell it, and we do not share it for advertising.
5. Storage, Retention, and Security
Account credentials and agent data live in a PostgreSQL database (Supabase), encrypted at rest and in transit. Event retention depends on your tier: Free keeps event payloads 7 days; Pro, Team and Enterprise keep them 90 days. A purge job runs once a day and deletes events older than those windows. Each run deletes at most 5,000 rows, so when more than that are past their window, it works through them over the following daily runs, and an event can outlast its window until a run reaches it. It deletes from the events table only, which holds your ingested events and your dashboard timeline.
Everything else is kept indefinitely and is not purged automatically: signed decision records, policy session records with the IP address and user agent that opened and closed them, hold records with their argument excerpts, trace ids, incident records, assessment engagement records (section 2b), wallet addresses with their balance history, and the append-only security log, including refused-key rows with their IP address, user agent and key prefix. Account records stay until you delete the account, and a trial account that is never claimed is not deleted automatically. The application role deliberately holds no delete privilege on the audit tables, so the service that writes the log cannot remove from it; a minimisation purge there is a manual database operation.
Longer or shorter event retention can be agreed per Master Services Agreement. Stating this plainly: no tier below Enterprise retains event payloads for six months, so if you have a six-month logging obligation, do not rely on our hosted retention alone. The way any tier satisfies it is to export the Ed25519-signed evidence package and keep it yourself. Once exported it is a self-contained artifact that does not depend on our retention or on our servers continuing to exist.
6. Local and Desktop Mode
Local mode is the alternative to cloud storage, and it is opt-in, not the default. VITNA Desktop writes events to a SQLite file in the app's data folder on your device, not to our database. Its guard is the MCP package pointed at the app, set up as the app's Guard mode screen shows: VITNA_BASE_URL set to http://127.0.0.1:5757, with the owner id, API key and policy file from that screen. Set up that way, the guard gets its decisions, holds and session bundles from the app on your machine and sends nothing to our servers. Those events, decisions and holds do not reach us, so there is no copy on our side to read, share or delete.
The app does contact our servers in two ways. About 10 seconds after launch, and every 6 hours after that, it checks for updates by fetching a release file from vitna.costrinity.xyz. That request carries no account, key or app version, only the name and version of the update library; like any web request, it reaches our host from your IP address. An update is downloaded from GitHub, and only when you click Update now. If you enter a licence key, the app sends the key to our licensing endpoint to activate it, and again at each launch to check it is still valid; we record when a key was last activated. Signing in to a cloud account is not available inside the app.
One honest limit remains: we cannot sign with VITNA's key what we never receive. The Desktop guard signs each session bundle with a key the app generates on your machine instead, and the bundle says so.
7. Data Sharing
We do not sell, rent, lease, or share your data with any third party for their own purposes, ever. We use a small set of sub-processors to run the service: our database (Supabase), hosting (Vercel) and transactional email (Resend) providers, each of which processes data only to deliver the service to you. If you sign in with GitHub, GitHub confirms your account to us under its own privacy policy. Payments by PayPal or card go through PayPal, under its own privacy policy. Checkout in Indian rupees through Razorpay is switched off pending merchant onboarding, so nothing is sent to Razorpay today; if it is switched on, a Razorpay order would carry your account email, your owner id, the plan and your jurisdiction. If you pay in SOL, Helius reports the payment to us, and no payment alert is sent to any third-party chat (section 2). If you book a call, Cal.com handles the booking under its own privacy policy (section 2b). Assessment engagement emails go out through our Google Workspace mailbox, and engagement invoices through PayPal (section 2b). Alerts go to the webhook addresses you or your agent configure, and whoever runs those addresses receives them. Our public stats show totals across all accounts and name none, and the public live feed shows only our own test accounts. The current sub-processor register is published at /api/compliance/sub-processors.
8. Your Rights
9. COSTRINITY, All Products
This policy applies to all current and future COSTRINITY products including VITNA (compliance and safety evidence for AI agents), GRiiD (Solana trading primitives, archived), CRYpT (desktop file encryption, archived), and any products we release in the future. The core principle is the same across all of them: your data is yours, we do not sell it, and we do not share it with third parties for their own purposes.
10. Changes to This Policy
If we make material changes to this policy, we will post the change here with an updated date at least 14 days before it takes effect (we do not currently send change notifications by email). The updated date at the top of this page always reflects the last change.
October 6, 2026: section 3 now says that text, lists and objects in an event's payload that lie beyond what our detectors read are replaced as a whole before the event is stored, instead of being stored as sent, and that when more than 1,000 of them do in one request, the payload whose parts go past that is replaced whole. This keeps less of what you send, not more, though a marker can take more bytes than a short part it replaces. It also says that a preflight check whose payload has such parts is not allowed, and what its record then names. It also says that our detectors now read the keys of an event's payload as well as its values, so that a key holding a secret or a personal identifier is replaced, with the object it is in, before the event is stored, instead of being stored as sent.
October 5, 2026: section 3 now says what an agent's API key can read of your account, and what it cannot change. It describes restrictions on what a key can read and do, not a new use of your data. Sections 2, 7 and 8 are also corrected to describe practice already in place, not a new use of your data: paying in SOL, with what Helius sees; that checkout through Razorpay is switched off and nothing is sent to Razorpay; that the dashboard download is JSON, with CSV from the events export endpoint; and that licence records are kept when an account is deleted. Sections 2 and 7 also say that we no longer send SOL payment alerts to any third-party chat. Section 3 also says that a secret or personal identifier our detectors find in an event's message is now replaced before the event is stored, as it already was in the payload. We store less, not more.
October 3, 2026: corrected to describe what guard mode, VITNA Desktop, the API and booking a call already send and keep. It describes practice already in place, not a new use of your data. It also describes what changes with MCP package 0.5.1: it stops sending your hostname in the agent name and file paths in the coverage list, and it adds the guard activation note in section 3, which starts on October 19, 2026 and which you can turn off.
11. Contact
Questions, data requests, or concerns: hello@costrinity.xyz. We aim to respond promptly; statutory data-subject request deadlines are honoured under the applicable regime.