All articles

Privacy3 min read

Identity stops at the Mothpoint

Every request to Moth passes one address, and by the time it leaves that address the model's host can read what you asked but has no way to tell who asked it.

01

One request, from a laptop

Picture a short script on your laptop that sends a contract to a model and asks for a summary. You wrote one question, but the request that leaves your machine carries a good deal more than that.

It goes out with a key tied to an account and a billing name, from an IP address that places it on a network, and with a user agent that names your client and its version. Your SDK may add fields such as user or metadata without being asked.

Fig. 01What a request carries, before and after the Mothpointsays who you areremovedgoes on

As it leaves your laptop

Mothpoint

As the host receives it

Account keynames you
Pooled keyshared by every caller
IP addresslocates you
IP addressMoth's server, not yours
User agentdescribes your device
User agentremoved
User fieldoften set by the app
User fieldremoved
Promptthe question
Promptthe question
Five fields leave your laptop. Four of them say who you are, and none of those reaches the host as you sent it.

None of that is needed to answer the question. Each piece tells one asker apart from another, and together they let a host link every prompt you send into one long record of what you were working on.

02

What happens at the Mothpoint

On Moth the same script calls one address, the Mothpoint, with a moth_ key. The Mothpoint doesn't pass your request along with a few headers crossed out. It reads the body, keeps only the fields the endpoint names, and builds a new call from what is left.

What you sendhttp
POST /v1/chat/completions
authorization: Bearer moth_7f3a…72fs
user-agent: openai-python
# from 203.0.113.24

{
  "model": "claude-sonnet-4.6",
  "user": "dana@example.com",
  "metadata": { "team": "research" },
  "messages": [{ "role": "user", "content": "Summarise this contract" }]
}
What leaves the Mothpointhttp
POST (the host's endpoint)
authorization: Bearer (one pooled key)
# from Moth's servers

{
  "model": "(the host's name for the model)",
  "messages": [{ "role": "user", "content": "Summarise this contract" }]
}
  • Your IP address and user agent stay behind, because no header you sent goes on and the call leaves from Moth's servers.
  • Your key is swapped for one pooled key that every caller's calls share.
  • Your wallet never reaches a host, and Moth keeps only a keyed hash of the address you sign in with.
  • Fields that name you, such as user, metadata and a message's name, are dropped without an error, so your SDK keeps working.
Fig. 02The seven stages every call passeswith your identityunder one pooled key
  1. https01ClientMoth Chat or your own code
  2. auth02Key checka moth_ key, or a wallet session kept as a keyed hash
  3. ledger03Holdthe worst case reserved on the balance
  4. strip04Identity offIP address, user agent, wallet and user field removed
  5. route05Routera host that serves the model at its listed price
  6. key06Pooled keythe call goes on under one shared key
  7. model07Model hostsees the question, not you
Your identity comes off at stage 04, and everything after it travels under the key every caller shares.

03

One pooled key for everyone

Taking those fields off would not be enough if each caller still left under a key of their own, because the key alone would let a host group your requests. So every call leaves under the same shared key, through one queue that takes accounts in turn.

The prompt goes on, since the model has to read it, and everything that says who sent it stops at the Mothpoint.

To the host, your question and anyone else's arrive the same way, from the same servers and under the same key. The reply is rewritten on the way back too, with Moth's own id and model name, and with any cost figure or error text from the host taken off.

Fig. 03What each party along the way can seesees itbriefly or in partnever

Your device

Mothpoint

Model host, Anonymized

Attested hardware, Sealedcoming next

Wallet address

yours

a keyed hash

never

never

IP address

yours

in memory, for rate limits

never

never

User agent and user field

yours

removed on arrival

never

never

Prompt and reply

yours

in transit only, unread when Sealed

under its own policy

inside the hardware only

Billing row

never

model, tokens and cost, 90 days

never

never

The Mothpoint keeps only what it needs to check your key and bill the call, and the model's host never learns who you are.

04

Nothing you send is kept

A promise about the host would mean little if the middle of the path kept a copy. The Mothpoint records each call by account, key, model, token counts, charge and time taken, and the prompt and the reply are not written down anywhere on our side.

0
copies of your prompt or the reply kept by Moth
1
pooled key that every call leaves under
90days
that a billing row is kept before it becomes a daily total
Fig. 04What is kept, and for how longnever written to diskkept, then gone

Prompts and outputsnever stored

Chat historyyour browser only

IP addressmemory only, for rate limits

Media job id24 hours

Error logs, content-free7 days

Billing rows90 days, then daily totals

Our published retention on a log scale of hours. Prompts, outputs and IP addresses are never written to disk.

Your chat history stays in your own browser, where you can export it or wipe it, and none of it sits on our servers.

05

What it can't hide

The Mothpoint removes who sent a request, not what the request says. If a prompt contains your name, your address or a detail only you would know, that detail reaches the model like the rest of the prompt, and in Anonymized mode the host can read the content under its own policy.

Read further