Roles
Owners seal files on their phone and get paid when queries read them. Buyers (AI labs and agents) pay per query in USDC and get answers, never files. Operators run a room, an Intel TDX machine, and stake $TACIT behind it. The keeper watches for leaked trap rows; the relayer claims payouts for owners who ask it to; the publisher, inside the room, posts the daily payouts. Parameters change only through a 48 hour public timelock.
Your data
Every upload is one file and its kind: a record. The browser seals it with HPKE (DHKEM X25519, HKDF-SHA256, AES-128-GCM) to the room's verified key, with kind|room as associated data, so a record only opens inside that room and only as that kind. The public record holds its hash, kind, size and owner, never its contents. Deleting a record takes one signed message: it leaves the next payout and the next training, and its ciphertext is dropped from the room's disk.
The room
A room is a confidential VM on Intel TDX. Its quote binds the measurements of the image it runs (MRTD and RTMR0 to RTMR2) and, in its report data, the hash of the room's encryption key. Anyone can check a quote in the browser with the verifier. A room may hold records only once its quote is published, its image is on the allowlist, and its operator's stake is in. Until then the site runs room 0 with a test key and keeps every sealed file on the owner's device.
Queries
A buyer prices a query for free, then pays it over x402: the room answers 402 Payment Required with the price in USDC, the buyer signs a USDC transfer on Solana, and asks again with the payment attached. A query reading n records costs ceil(n) × 100 micro-USDC (0.01 USDC per 100 records). The room refuses before any charge when n is below 25, or when it holds fewer than n records of the kinds asked. Each query runs once, inside the room, and only the answer leaves, with a receipt signed by the room.
The split
| Share | Query | Model call |
|---|---|---|
| Owners, through the daily payouts | 70% | 100% |
| Model treasury | 10% | 0 |
| Operator of the room | 5% | 0 |
| Burn reserve | 15% | 0 |
Owners and burn round down; the model treasury takes the remainder, so the parts always add up to the price.
Daily payouts
Once a day the publisher, inside the room, turns the day's receipts into each owner's total, pro rata to the records each query read, and posts a merkle root of the totals on Solana. Owners claim their total in USDC to the wallet they choose, or let the relayer claim for them. A root never commits more than the payout wallet holds.
Trap rows
Each buyer's view carries its own trap rows: fake records (names, emails, phone numbers, URLs) with a random secret that exists nowhere else. The room posts the merkle root of a view's trap rows before the view answers its first query. Whoever finds a trap row outside reveals its secret with its proof: that opens a case and freezes the buyer's deposit. The buyer has 48 hours to dispute; otherwise the whole deposit goes to the owners. A trap row leaked by the room itself slashes its operator's stake instead.
The stake
Every room stakes 100,000 $TACIT before it may hold a record. Unstaking takes 7 days and the stake can be slashed until it is withdrawn. A slash burns half and pays the other half to the owners.
The burn
15% of every query goes to the burn reserve. At most once an hour, and for at most 0.5% of the pool's depth, the reserve buys $TACIT and burns it with the SPL burn instruction, so the supply really shrinks. The burned total is read from the chain on the site.
The private model
A LoRA adapter (rank 8) on Qwen2.5 0.5B Instruct, trained each week on CPU inside the room on live text records, trap rows and deleted records excluded. Its weights never leave the room. A call costs 0.002 USDC and pays 100% to the owners whose text trained it. First training once 25 text records are in.
Parameters
| Parameter | Value |
|---|---|
| Price per 100 records | 0.01 USDC |
| Model call | 0.002 USDC |
| Least records per answer | 25 |
| Minimum buyer deposit | 5 USDC |
| Challenge window | 48 hours |
| Unstaking delay | 7 days |
| Stake per room | 100,000 $TACIT |
| Payment asset | USDC on Solana |
Where it stands
Tacit runs in two phases, and the site always says which one is live. Phase 1, now: the site, browser sealing, query pricing, the verifier and the waitlist are live; room 0 runs with a test key, uploads stay on owners' devices, and no query can be paid yet. Phase 2, with wave 1: the room boots on a TDX machine and publishes its quote, uploads open, queries settle over x402, and payouts, trap roots and stakes are posted on Solana. The contracts behind stakes, deposits and payouts are not audited yet; this page will link the audit when there is one.