The short version
Jnvoy reads your text only to redact it, keeps a record that describes each request without containing it, and keeps each customer's records apart. It is a young product, so this page also says what is missing.
How it is protected
Keys and access
- API keys are compared in constant time, are never written to logs or responses, and each key is rate limited.
- Repeated wrong keys from one address are blocked for a while.
- Operator routes, such as creating customers and reading the whole deployment, need an operator key that customer keys cannot use.
- Customers use their own model provider key. It is sent in a header, used for that one request, and never stored, logged or cached. Jnvoy's own provider keys are never used for a customer.
- A customer key can be replaced on request. The old key stops working straight away.
Customer separation
- Each customer has their own audit records, response cache, monthly usage count and settings. A customer can read only their own.
- Monthly plan limits are enforced for every customer, so one customer's traffic cannot use up another's allowance.
What is kept
- Original text is never saved. The audit record holds counts of what was found, by type. The privacy page lists every place data lives.
- The database accepts connections only from the Jnvoy service inside its private network. It is closed to the public internet.
Availability and recovery
- The database is backed up continuously and can be restored to any moment in the last 3 days.
- The health page is checked every 5 minutes from outside, and an alert is sent if it fails or reports the database as unwell.
- If the database restarts, Jnvoy replaces its dead connections by itself. This is tested by cutting every connection.
- There is a written runbook for deploys, key changes, restores and incidents.
The code
- The source is published on GitHub under the Business Source License, so you can read the code and check any statement here against it.
- More than 1,000 automated tests run before every change is published.
Where your text goes
The original text reaches Jnvoy, because Jnvoy has to read it to redact it. On the hosted service it travels there through Cloudflare, which Render uses at the edge of its network and which can read the traffic on the way in (see Services we use). It does not travel past Jnvoy. Only the redacted text goes to the model provider the customer chose (and, in a self-hosted deployment, to the optional second check), and the database holds counts, never text.
- Your application sends the prompt to Jnvoy over HTTPS. On the hosted service the request passes through Cloudflare on the way, which can read it. The original text travels no further than Jnvoy.
- Jnvoy replaces sensitive values with tokens and sends the redacted prompt to the model provider the customer chose. If a self-hosted deployment has the second check on, the redacted text also goes to the model it runs on.
- The model provider writes a reply that uses the tokens, and sends it back.
- Jnvoy scans the reply, puts the real values back, and returns it to your application.
- Jnvoy writes counts of what it found to the database. It never writes the text.
Services we use
These are the services involved in running Jnvoy. Render and Cloudflare can see request text as it arrives, original values included. The model provider sees only the redacted form. The others never see request text. If the text must not pass through any outside service on the way in, self-host.
Render publishes its own SOC 2 Type 2 and ISO 27001 certifications on its security page. They cover Render's platform. They do not make Jnvoy certified.
What we have not done yet
These are the gaps a careful buyer should know about before sending real data.
- No certification. Jnvoy has no SOC 2 or ISO 27001 report of its own.
- No independent penetration test. The tests are ours. We plan an independent test once there are paying customers.
- One instance, one region. The service runs as a single instance with no automatic failover. A deploy or a crash can mean a short outage. Uptime is not guaranteed on the free and production plans, and is agreed in writing on Enterprise.
- Detection misses some of what it should find. Every number, including the lower result on a set kept unseen, is on the accuracy page, and the limits are on the privacy page.
- Data processing agreement. Ask for one before you send real data.
The threat model lists each way Jnvoy can go wrong that we could think of, what stops it today, the test that shows it, and what is left. It also lists what has no control yet, including that one person runs everything. It has not been reviewed by anyone outside the company.
Report a problem
If you find a security problem, write to j.nagaraj2109@gmail.com with the subject "Jnvoy security". We will acknowledge within two working days, and we will tell affected customers without undue delay if their data is involved. Please do not test against other customers' data. The rules for researchers are in SECURITY.md, and the same contact details are in our security.txt.
Jnvoy is operated by JNVOY LIMITED, a private company limited by shares, registered in England and Wales under company number 17536574.