A windowed desktop in a browser tab, backed by storage and AI APIs
Puter puts a desktop in a browser tab, with windows, folders, a dock and an app store. The backend behind it keeps each account's files, runs a key-value store, forwards requests to AI models and hosts static sites. Web apps reach all of it through the Puter.js SDK, so they can save data or query a model without a server of their own. The project calls itself an open source "internet computer", and a hosted version runs at puter.com.
Backend-free apps, each fenced into its own folder
- Puter.js comes from npm (
@heyputer/puter.js) or a<script>tag, and works on an ordinary website, inside a Puter app, under Node.js or in a worker. Its APIs cover AI, auth, files, key-value storage, static hosting, serverless workers and peer-to-peer connections. - Sandboxed apps: each app gets
~/AppData/<app-id>/and a key-value store of its own, and nothing else in the account is visible to it. Reaching a specific file, a folder or the user's email address takes aputer.perms.requestcall. - A subdomain for every site and app: users publish to subdomains Puter creates on demand,
<name>.site.<domain>for sites and<name>.app.<domain>for apps. - AI on your own keys: on a self-hosted instance, a Claude, OpenAI or Gemini key in
config.jsonswitches that provider on, and theaiCompose profile adds Ollama, withtinyllamaas the default local model. - Sign-in and sign-up controls: login through Google, Apple, Microsoft or any other OIDC provider, a proof-of-work captcha with no outside service involved, and
disable_user_signupto stop new registrations.
Self-hosting means wildcard DNS and switching off the meter
A self-hosted Puter depends on five other services and a wildcard DNS record. The official docker-compose.yml, which the guide calls the closest thing to a production deployment you can manage yourself on a single host, runs Puter next to MariaDB, Valkey, DynamoDB Local, RustFS for S3 storage and Caddy. Puter routes every request by hostname (api., site., app., s3.), hence the wildcard record. A public instance also needs a wildcard certificate, issued through a DNS challenge the bundled Caddy image cannot complete alone. The README's npm start is development mode, backed by SQLite.
Self-hosted accounts inherit the free-tier budget of puter.com. Each account's serving cost (bytes sent, storage requests, AI tokens) is metered against the hosted service's free allowance: US$0.50 a month, roughly 2.5 GiB of downloads. Once that runs out, operations fail with a 402 error, and a self-hosted install has no paid plan to raise the cap. The self-hosting guide tells admins to set "unlimitedMetering": true.
On puter.com, users pay for their own consumption. Under what the project calls the User-Pays Model, people sign in to a Puter.js app with their Puter account and pay for the AI and storage they use beyond a free monthly allowance. The developer pays nothing for infrastructure, but every user of the app needs a Puter account.
The AGPL covers the code, not the name. Puter is licensed under AGPL-3.0, and TRADEMARK.md adds rules of its own: a redistributed modified version has to drop the Puter logos and say that Puter Technologies Inc. does not endorse it. Registering a domain name that contains the mark is off limits.
Ten releases have shipped in under four months. Version numbers follow the year and month, from 26.07 on 8 July 2026 to 26.10.1, the latest, on 25 October; the most recent commit is from 27 October 2026. MariaDB/MySQL and SQLite are the supported databases. PostgreSQL support was contributed by the community, is not used in production at puter.com, and can still fail on less common queries.
