Cabinet Privacy Policy

Last updated: 1 September 2026

Short version: your private boards stay in your browser unless you choose to share or publish one, or enable backup. The optional Google Drive backup is encrypted on your device before it leaves. Sharing a board is the one thing that uploads board content for collaboration; publishing an adventure in the marketplace also uploads the snapshot being sold. Neither copy is end-to-end encrypted. AI tools send your prompts and images to the provider you choose, using your own API key. Cabinet has no analytics, no ads, and does not sell your data.

For workplace and IT review

This section exists to answer one question precisely: "Can I use Cabinet with my work email and company-approved AI accounts?" Everything in it is expanded further down the page.

ActionWhere your data goes
Work on a private board Your browser only (IndexedDB). Nothing is uploaded.
Create a Cabinet account Email address + password to Supabase Auth (Cabinet's database provider). Optional display name.
Enable Google Drive backup The vault is encrypted on your device with your passphrase, then stored in a private app-data folder of your own Google Drive. Google and Cabinet only ever see ciphertext.
Share a board A copy of that board — content and media, not encrypted — to Cabinet's database (Supabase), so invited people or link holders can view it.
Use AI tools (Scenario / PixelLab) Prompt/images → Cabinet's gateway (stores and logs nothing) → the provider, authenticated with your own API key.
Add an AI API key Sealed into an encrypted, HttpOnly cookie in your browser. Never stored in Cabinet's database; page scripts cannot read it.
Link a Solana wallet The wallet's public address and a signed linking message to Cabinet for verification. Cabinet stores the address, network and timestamps against your account, but not the signed message or its signature. On-chain activity for the address is public on Solana.
Buy something in the marketplace Cabinet gives your wallet an unsigned transaction; the wallet signs and submits it to Solana. Cabinet receives the transaction signature, reads the submitted transaction from a Solana RPC provider, and stores the purchase and access records.
Connect GitHub GitHub App sign-in; repository reads/commits happen only at your request.
Paste a web link on a board Cabinet's server fetches that URL to build the preview card. Only the URL is involved — never board content.

The trade-offs are listed under Known limitations.

What Cabinet is

Cabinet is a local-first visual board app for notes, shapes, tables and images. By default it needs no account and uploads nothing: boards live in your browser. An optional Cabinet account adds collaboration (shared boards), AI image tools and optional marketplace features; those features are backed by a small server side — serverless functions and a database — described on this page. For a signed-in account, Cabinet checks whether the marketplace is available even if you do not open it. Other optional actions send the data described here when you use them.

Where your boards are stored

Cabinet accounts

Sharing

Sharing uploads a copy of board content for collaboration. Publishing to the marketplace is the other feature that uploads board content; it is described under Solana wallet and the marketplace.

Google Drive access (narrow scope)

How Cabinet uses Google user data (Limited Use)

Cabinet's use of information received from Google APIs adheres to the Google API Services User Data Policy, including the Limited Use requirements.

Disconnecting Google Drive

You can revoke Cabinet's access to your Google Drive at any time from your Google Account → Data & privacy → Third-party apps & services, and remove Cabinet. You can also disconnect from within Cabinet (the Drive Sync panel) and delete the Cabinet vault file from your Drive. Revoking access does not affect boards saved locally in your browser.

Encryption

AI features (bring your own key)

GitHub (optional)

Connecting GitHub uses a GitHub App sign-in and only touches the repositories you give the app access to. Reads and commits happen only when you ask for them. Tokens are handled server-side in a sealed session and are never exposed to page JavaScript or stored in Cabinet's database. See GitHub's privacy statement.

Solana wallet and the marketplace (optional)

Solana transactions and wallet addresses are public. Linking tells Cabinet which public address belongs to your Cabinet account. Payments involving that address can be inspected on the public chain and linked to one another. Cabinet cannot make those records private or remove them from Solana.

To link a wallet, Cabinet sends a short-lived challenge and receives the signed message and signature needed to verify it. The stored wallet row contains your account id, public address, chain, network and timestamps; it does not contain the signed message or signature. Cabinet never asks for, receives or transmits your private key or recovery phrase.

For a payment, Cabinet creates an unsigned transaction and gives those bytes to your wallet. The wallet signs and submits it. Cabinet receives the resulting signature and later downloads the already-submitted, signed transaction from a Solana RPC provider to verify it. Cabinet has no buyer-wallet key and does not sign or submit the transaction itself.

Linking a wallet does not make it a Cabinet sign-in method. Linking by itself does not publish the connection between your wallet and Cabinet account to other users. If you publish a marketplace listing, however, its seller wallet and creator account id are readable by signed-in users while the listing is active; the payout address is also public on Solana.

A verified purchase creates a purchase row and a separate entitlement for your account. The records include the product version, buyer wallet, amount and payment token, transaction signature, licence kind and version, purchase-terms version and timestamps. Those buyer records are removed by a successful account deletion. The public Solana transaction is not removed.

While the marketplace panel is available, its Unlink button deletes the active wallet-connection row. It does not delete the same address from existing quotes, purchases or seller listings, and it cannot remove an on-chain transaction.

Link previews

When you paste a web link onto a board, Cabinet's server fetches that URL once to build the preview card (title, description, image). Only the URL you pasted is involved — never board content. Cabinet's code does not store the URL or write it to its logs; like any web request, it appears in the hosting platform's standard access logs.

Cookies and local storage

Cabinet sets no tracking cookies — only functional cookies and browser storage:

Service providers

ServiceUsed forWhat it can see
Vercel Hosting the app and Cabinet's serverless functions Standard access logs (IP address, request time and path) as part of normal operation. Request bodies are processed in memory and not stored.
Supabase Accounts, shared boards and marketplace data Account email + password hash, display name, shared board content and media, invite emails, the addresses you have invited before, salted hashes of link passwords, linked public wallet addresses, marketplace listings and snapshots, quotes, purchases and entitlements.
Resend Sending invitation emails The invited email address and the invitation message (who invited them, and the board's title).
Google Optional Drive backup Only the encrypted vault file; never plaintext.
Scenario / PixelLab Optional AI tools Your prompts and the images you send, under your own account with them.
GitHub Optional repository connection The repository actions you ask for.
Configured Solana RPC provider Marketplace quotes, payment verification and recovery checks Public wallet addresses, references, signatures and transaction data requested by Cabinet. The requests come from Cabinet's server, not directly from your browser.

Fonts are self-hosted and served from the same site as the app — nothing is loaded from Google Fonts or any other font service. The only third-party script Cabinet ever loads is Google's sign-in script, and only when you use Drive sync.

Logging

Cabinet's own code does not log board content, prompts, API keys, tokens, or pasted URLs — on failures it records only the kind of error. Rate limiting uses your IP address (share-link views) or a hash of your session token (AI requests), held in memory only. Failed link-password attempts are also counted per board — a number and a time, no addresses — to slow guessing. The hosting platform keeps standard access logs, as noted above.

Deletion and sign-out

What Cabinet does not do

Known limitations

Local-only data can be lost

If you don't connect Google Drive, your boards exist only in this browser. Clearing browser data, using private/incognito windows, or switching browsers or devices can make local boards unavailable. If you stay local-only, export an encrypted backup regularly (Vault panel → "Export encrypted backup") so you don't lose access.

Contact

If you have questions about this privacy policy, Cabinet's Google Drive access, or data deletion, contact the Cabinet operator at: hello@cabinet.cool

Changes

This policy may be updated as Cabinet changes. The "Last updated" date above reflects the current version.


← Back to Cabinet