Puter is an open-source personal cloud operating system designed to give you full control over your files, applications, and games. It functions as a private cloud desktop where you can store data, run software, and work remotely from any location. Remarkably, a modest NAS with just 2GB of RAM is sufficient to host the entire platform.
Using Puter
Local Development
git clone https://github.com/HeyPuter/putercd puternpm installnpm startPuter will run at http://puter.localhost:4100 (or the next available port). If you run into trouble, refer to the "First Run Issues" section of the documentation.
Docker
mkdir puter && cd puter && mkdir -p puter/config puter/data && sudo chown -R 1000:1000 puter && docker run --rm -p 4100:4100 -v `pwd`/puter/config:/etc/puter -v `pwd`/puter/data:/var/puter ghcr.io/heyputer/puter
Once running, the interface will be accessible at http://puter.localhost:4100.
Docker Compose
Linux / macOS
mkdir -p puter/config puter/datasudo chown -R 1000:1000 puterwget https://raw.githubusercontent.com/HeyPuter/puter/main/docker-compose.ymldocker compose upWindows
mkdir puter then cd puterNew-Item -Path "puter\config" -ItemType Directory -Force
New-Item -Path "puter\data" -ItemType Directory -Force
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/HeyPuter/puter/main/docker-compose.yml" -OutFile "docker-compose.yml"
docker compose upPuter will be reachable at http://puter.localhost:4100.
Self-Hosting Puter
Differences From the Hosted Version
Configuration
The server generates a configuration file, the location of which depends on your installation method:
config/config.jsonvolatile/config/config.json/etc/puter/config.jsonDomain Setup
On the host machine, use the address displayed in the console (typically puter.localhost:4100).
To access Puter from other devices on your local network (LAN), enable the following setting: "allow_nipio_domains": true
For external access, point a domain and an api subdomain at your server's IP address (for example, example.com and api.example.com). You must then specify this domain in your config.json file (usually located at volatile/config/config.json).
Port Configuration
http_port to your preferred custom value.pub_port to the external port (commonly 443).protocol setting in config.json matches.Default User
Upon installation, Puter creates a user named default_user with a randomly generated password. The console will display this password and show a warning until it is changed. After your first login, be sure to update the password immediately for security.
System Requirements
Jules Extension for Gemini CLI: Asynchronous Tasks and Automated GitHub PRs
TradingAgents-MCP: A 15-Agent AI Framework for Real-Time Stock Analysis
AoxVPN 8.8 Member Day Sale | No-Log VPN Featuring IEPL Private Lines
Yank Note Review: A Hackable Markdown Editor That Runs Code
ChatGPT-on-WeChat Setup Guide: Run GPT-4o, Claude & More on WeChat
Strapi Setup Guide: Local Development & Cloud Deployment
Any-LLM Review: A Unified Python Interface for Every AI Model
MaskSearch: Training LLMs for Expert-Level Search Capabilities
AingDesk: Run Local AI Models and Build a Private Knowledge Base
BAGEL 7B MoT: The Open Multimodal Model Outperforming Qwen2.5-VL
Slidev: Markdown-Based Presentations for Developers
Nping: A High-Performance Concurrent Ping Tool in Rust with Live Charts