Puter
A self-hostable, web-based internet OS with desktop GUI, cloud storage, AI drivers, and a developer SDK — all running in your browser.
Puter is an open-source, self-hostable internet computer that delivers a full desktop operating system experience directly in the browser. It combines a familiar windowed desktop interface with integrated cloud file storage, a multi-provider AI layer, a key-value database, serverless worker execution, and a public app store — all served from a single Node.js process you can run on a $5 VPS or behind Docker in minutes.
At its core, Puter treats the browser as the execution environment for a complete personal computer. Users get a persistent home directory, drag-and-drop file management, a built-in notepad, spreadsheet, camera, voice recorder, and a growing catalogue of community-published apps and games — without installing anything locally. Everything is accessible from any device with a browser and syncs automatically.
For developers, Puter doubles as an application platform. The puter.js SDK exposes cloud storage, AI chat completions, image generation, speech synthesis, OCR, key-value storage, and subdomain hosting directly from frontend JavaScript — no backend needed. Developers publish apps to the Puter App Store and can monetize them against Puter’s existing user base, turning Puter into a distribution channel as much as a runtime.
The self-hosting path is designed to be genuinely frictionless: a single curl command on Linux or a PowerShell one-liner on Windows runs the setup script, and Docker Compose brings up a production-ready instance. Configuration merges a typed config.default.json with user overrides, making it easy to swap database backends (SQLite for development, PostgreSQL or MySQL for production), wire up S3-compatible object storage, or enable Redis for cross-instance event broadcasting.
What You Get
- Full windowed desktop GUI in the browser with drag-and-drop file management, context menus, and a persistent home directory accessible from any device
- Built-in productivity apps including Notepad, Spreadsheet, Camera, Voice Recorder, and a Code Editor, plus a growing App Store of community-published web apps and games
- Multi-provider AI layer with a unified
puter.aiAPI covering chat (OpenAI, Anthropic Claude, Google Gemini, Mistral, DeepSeek, Groq, Ollama, and more), image generation, OCR, speech-to-text, and text-to-speech - Cloud storage with S3-compatible object backend, file sharing by link or username, real-time sync, and signed upload URLs for large-file workflows
- Developer SDK (
puter.js) that exposes cloud storage, AI, KV database, serverless workers, and subdomain hosting from plain frontend JavaScript without any backend code - Serverless worker execution environment so developers can run isolated compute tasks inside the Puter sandbox alongside their apps
- Built-in key-value store accessible via the
puter.kvSDK, suitable for app preferences, user state, and lightweight structured data - Self-hosting tooling including a one-command install script, Docker multi-arch image, and a config system that supports SQLite, PostgreSQL, and MySQL interchangeably
Common Use Cases
- Personal cloud desktop: individuals self-host Puter on a VPS to get a private, browser-accessible file system and productivity suite without relying on Google Drive or Dropbox
- Developer app platform: teams build and publish web apps using
puter.jsfor storage and AI, then distribute through the Puter App Store to reach existing users - AI prototyping environment: developers use the unified
puter.aiinterface to experiment with multiple LLM providers (Claude, GPT-4o, Gemini, Mistral) from a single API surface without managing separate API keys per provider - Embedded web OS: organizations embed Puter into their own infrastructure as a self-contained web desktop for remote employees, providing file access, apps, and collaboration tools through any browser
- NAS front-end: home lab users mount Puter on top of their NAS hardware to get a modern GUI for file browsing, sharing, and media access instead of raw SMB or SFTP interfaces
- Educational computing platform: schools deploy Puter instances to give students a consistent, zero-install computing environment with code editors and productivity tools accessible on any classroom device
Under The Hood
Architecture
Puter’s backend follows a strict layered architecture — Config → Clients → Stores → Services → Drivers → Controllers — where each layer receives the layer beneath it through constructor injection orchestrated by a central PuterServer bootstrap class. This eliminates circular dependencies and makes the dependency graph explicit and traceable. An AsyncLocalStorage-backed Context object carries per-request actor and request state without threading it through every function signature, used sparingly so it does not become a hidden global. A first-class extension system allows external packages to register into any layer at startup, making the core genuinely composable rather than requiring forks. The architecture document (including a live Mermaid diagram) ships in the repository itself, which is uncommon for a project of this age and signals deliberate architectural discipline.
Tech Stack
The backend runs on Node.js 24 in TypeScript, compiled via tsc and bundled for deployment inside a multi-arch Docker image. Express handles HTTP routing with a custom PuterRouter that translates declarative RouteOptions (auth gates, subdomain gates, rate limits, body parsers) into Express middleware chains. Persistence is pluggable: Better-SQLite3 for development, MySQL2 or node-postgres for production, with a typed IConfig driving selection at startup. File data lands in S3-compatible object storage via the AWS SDK. Redis and socket.io with a Redis streams adapter power real-time file system events across multiple server nodes. The AI layer aggregates more than fifteen upstream providers — OpenAI, Anthropic Claude, Google Gemini, Mistral, DeepSeek, Groq, Ollama, Together AI, xAI, Azure, OpenRouter, Alibaba, MoonShot, MiniMax, and ZAI — behind a single normalized IChatProvider interface with automatic fallback across providers on upstream errors. The GUI is a vanilla JavaScript application bundled by Webpack, intentionally avoiding heavy frontend frameworks to keep the browser OS lightweight and portable.
Code Quality
The codebase uses TypeScript in strict mode across the backend and extension layer, with ESLint and Prettier enforced via Husky pre-commit hooks. Testing uses Vitest with v8 coverage reporting; tests span the backend service layer, individual drivers, utility functions, extension modules, and the puter-js SDK, with a pgmock-based PostgreSQL emulation path for database integration tests. The architecture document, inline JSDoc comments throughout the codebase, a CONTRIBUTING guide, a SECURITY policy, and developer-facing API documentation represent a comprehensive documentation investment. Error handling in the backend is explicit: typed HttpError objects carry status codes, a structured error handler middleware classifies upstream AI provider errors into user-facing status codes rather than blanking them as 500s, and auth gates are declared per-route rather than inferred. The main areas of complexity lie in the GUI layer, which remains predominantly vanilla JavaScript and carries the accumulated surface area of a full desktop environment.
What Makes It Unique Puter’s distinguishing technical choice is treating a web application runtime as a complete personal computing platform rather than a hosted file manager or a developer tool. Uniquely, it combines the desktop OS metaphor (persistent home directory, windowed apps, file associations, app store distribution) with a developer SDK that provides cloud primitives from plain frontend JavaScript — storage, AI, KV, subdomains, serverless workers — so app authors never need a backend. The unified AI driver with automatic provider fallback (up to four attempts across providers) is a practical feature that makes Puter more resilient to upstream outages than apps that hard-code a single LLM provider. The extension system that lets third parties register into every backend layer without forking is unusual for an open-source web OS, as is the decision to ship a first-class architecture document as part of the repository itself.
Self-Hosting
Puter is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). In plain terms, the AGPL permits commercial use and modification, but carries a strong copyleft condition: if you run a modified version of Puter as a networked service — including internally within a company — you must release your modifications under the same license to users who interact with the service over the network. This is a meaningful constraint for companies that intend to customize Puter heavily and keep those changes proprietary. If your use is purely internal tooling or you are comfortable publishing modifications, AGPL is workable; if you need to keep changes closed, you would need a separate commercial license from Puter Technologies Inc.
Running Puter yourself is operationally straightforward for small deployments but grows in complexity with scale. The default configuration runs entirely on SQLite and local disk storage, which works for single-user or small-team installations on a single node. Production deployments are expected to swap in PostgreSQL or MySQL for the relational store, S3-compatible object storage for file data, and Redis for cross-instance event broadcasting — each of which brings its own operational surface: database backups, storage lifecycle policies, cache invalidation, and TLS termination (typically handled by the bundled Nginx config or a reverse proxy you manage). Node.js 24 is a hard runtime requirement. You are responsible for OS patching, certificate renewal, monitoring, and rolling upgrades as new releases ship on a roughly monthly cadence.
The hosted Puter.com service offers the same core feature set but removes all of that operational burden — Puter Technologies manages uptime, automatic upgrades, backups, and the AI provider integrations. The self-hosted path does not currently offer an enterprise SLA, priority support tier, or high-availability clustering guide out of the box. The App Store on Puter.com also provides a ready user base that self-hosted instances do not share; apps published by developers reach Puter.com users only if they are listed on the hosted platform, not from a private instance. Community support is available via Discord and Reddit; security issues go to security@puter.com.
Related Apps
Ollama
AI Development · Developer Tools
Run Llama, Gemma, DeepSeek, and other open LLMs on your own machine with one command and an OpenAI-compatible API.
Ollama
MITDify
No Code Platforms · AI Development · Developer Tools
Visual LLM workflow platform with RAG pipelines, agent capabilities, and model management for building production AI applications.
Dify
OtherFirecrawl
AI Development · Developer Tools
Turn any website into clean, LLM-ready data with a single API call — no proxy headaches, no scraping complexity.