What is NMTS?
Encrypted file storage where the keys stay on your machine. The server holds encrypted bytes it cannot open, and there is no email, no name and no password reset — the NMTS key is the account.
The bytes live on Walrus, a public storage network, bought for a period and paid on the Sui chain. NMTS charges nothing: an upload spends credits from a donation pool or coins from your own wallet.
What can you do with it?
- Everything the browser does, from a terminal: upload, download, folders, sharing, the wallet, the recovery list.
- The same commands as tools for an AI agent over MCP, with a consent ladder that says what an agent may do on its own.
- An HTTP API, opened by an API key made for the account.
- A recovery program that rebuilds your files from the network with no NMTS server.
- The tool, the encryption engine and the recovery program are Apache-2.0. The server and the web app are not published.
Which prompt do I paste into an agent?
The texts to paste into an AI agent are on the AI agents page, three of them: learn about NMTS, let the agent set itself up, or all in one. The second and third carry a one-hour, one-time pass the agent uses to make its own account.
What is the command-line tool? — nmts-cli
A command called nmts, run from a terminal on Node 22 or newer. It does from a terminal what the browser does — uploads and downloads, folders and listings, sharing, credits and the wallet, and the recovery files.
npm install -g github:needmoretruth/nmts-cliAdding it to an AI agent is one line. Claude Code, Codex and opencode each take the same one, with their own name in front. Once it is added, the agent uses the account through this tool. The NMTS key is kept on that machine, so the tool says what that means before it does it. Three things ask once per machine: spending money, anything that cannot be undone, and the NMTS key going anywhere outside the tool's own locked file. The answer is a command — nmts consent grant spend is the one an upload needs — and until it is given the tool stops and exits with code 5 rather than guessing.
claude mcp add nmts -- nmts mcp --out ~/nmts
codex mcp add nmts -- nmts mcp --out ~/nmts
opencode mcp add nmts -- nmts mcp --out ~/nmtsThe instructions for agents are at nmts.me/agents.md, and in the repository as AGENTS.md.
Is there a library? — nmts-sdk
A TypeScript library that puts, gets and lists files in an NMTS account from your own program, on Node 22 or newer or in a browser page. Files are encrypted inside your program by the same engine the browser uses, and the NMTS key never leaves it. A business can use it to open NMTS accounts for the people who use its product.
npm install @needmoretruth/nmts-sdkIt needs an account and an API key. A person makes them at nmts.me, or an agent makes them with a one-time pass from the AI agents page. Sharing, folders and the trash are in the command-line tool and not in the library. It is published on npm and is early: the interface may still change before 1.0.
Is there an API?
The server speaks HTTP at nmts.me/v1, and an agent key made on the account screen is what opens it. A key can do what was ticked when it was made and nothing else: read what is stored, upload and delete files, buy storage with credits. It does not reach the account screen, the signed-in devices, or anything that cannot be undone.
A key is not the NMTS key. The key opens the server; the key that opens the files is derived from the NMTS key. There is no separate list of endpoints. That list is the command-line tool's source, which is a program making those same requests.
What is the recovery program? — nmts-recovery
One executable, for Linux, macOS and Windows. Give it a recovery list file and your NMTS key and it fetches the pieces from the storage network and puts your files back together. It does not connect to an NMTS server.
It runs from a terminal; --gui opens a screen you click instead. The recovery list file is downloaded from the account screen beforehand. The built executables and the source are in the same place.
What is the encryption engine? — nmts-crypto
The Rust library the browser and the recovery program both use. It derives the keys from an NMTS key, encrypts files, and opens them again.
Because both programs use the same code, a file encrypted in the browser opens in the recovery program with no NMTS involved. The format documents are in the same place.
What licence is it under?
Every published repository is Apache-2.0. Run them, change them, build on them — including in a commercial product — keeping the licence and copyright notices, and saying in changed files that you changed them. They were AGPL-3.0 until 30 August 2026; copies already held under that licence stay under it.
Built on this?
If you built something on these — a service, a fork, a port, a lighter client — you owe us nothing beyond the licence notices, and we would still like to know: nmts@nmts.me, or an issue on the repository if public is fine with you. Each repository has a SHOWCASE file that lists projects at their makers' request, a link and up to ten lines each. A listing is not an endorsement, and we may decline or remove one without giving a reason.
What is not published?
The server and the web app are not open source.
There is no way for you to check that the code your browser was handed is the code in that repository; that is true of every end-to-end encrypted app that runs in a browser. What we do about it: every page carries a Content Security Policy that lets scripts load only from nmts.me and Cloudflare, refuses inline event handlers, requires Trusted Types, and lets the page talk to a short list of named hosts and nothing else; the server has no open port (a Cloudflare Tunnel reaches it) and runs on one machine only the developer touches; each release is built from one recorded commit. That narrows who could change the code to the developer and Cloudflare, and it is not a proof. The command-line tool and the recovery program do not have that problem: the file you downloaded is the file that runs, and the recovery program's release carries its checksums.