Go to file
KernelDeimos da613af9ea dev: add generic pub/sub system for use anywhere
Dispatching and listening to events is non-trivial. The apparent
triviality is in implementing a list of listeners and calling them. The
non-triviality is in the nature of what happens to a system when it has
multiple different interfaces to register listeners and publish events.

This commit adds TopicsFeature, which allows any class extending
AdvancedBase to declare topics. A topic is a simple pub/sub channel.
TopicsFeature will manage the state of listeners so the class doesn't
need to. A GC-friendly mechanism for detaching listeners is also provided.
2024-10-17 22:50:19 -04:00
.github Create test workflow 2024-10-14 22:18:36 -04:00
awesome Rename #DoesItRunPuter?.md to #DoesItRunPuter.md 2024-07-10 11:53:11 -07:00
badges Add badges 2024-07-25 17:33:10 +02:00
doc doc: add brainstorming for mountpoints 2024-10-17 03:00:35 -04:00
experiments dev(license-headers): fix excludes list 2024-07-10 16:25:14 -04:00
mods chore: add missing license headers 2024-07-09 04:10:33 -04:00
src dev: add generic pub/sub system for use anywhere 2024-10-17 22:50:19 -04:00
submodules update 9p-puter driver with error handling 2024-10-09 20:36:03 -04:00
tools dev: update v86, switch twisp to epoxy-server with twisp feature 2024-10-07 22:04:41 -04:00
volatile Release backend 2024-03-30 19:08:03 -04:00
.dockerignore Fix Dockerfile 2024-04-15 19:03:00 -04:00
.env.example chore: format content 📝 2024-05-06 01:14:36 +00:00
.gitattributes Initial commit 2024-03-02 18:39:14 -08:00
.gitignore chore: comment and fine tune .gitignore settings 🔨 2024-05-06 01:18:40 +00:00
.gitmodules change submodule url 2024-10-09 20:36:03 -04:00
.is_puter_repository Release backend 2024-03-30 19:08:03 -04:00
addlicense.yml dev(tools): add license header adder thingy 2024-07-10 00:41:08 -04:00
CHANGELOG.md release: v2.4.2 2024-07-22 20:23:40 -04:00
CONTRIBUTING.md doc: update CONTRIBUTING.md 2024-08-23 15:09:25 -04:00
docker-compose.yml Update instructions & docker-compose to reflect production paths 2024-04-02 07:45:14 +02:00
Dockerfile Update Dockerfile 2024-07-18 13:33:02 -07:00
eslint.config.js chore: add Buffer to eslint 2024-07-07 17:12:55 -04:00
exports.js chore: add missing license headers 2024-07-09 04:10:33 -04:00
LICENSE.txt Initial commit 2024-03-02 18:39:14 -08:00
package-lock.json dev: update emu load indicator 2024-09-30 16:50:03 -04:00
package.json test: update test invocation 2024-10-10 03:19:28 -04:00
README.md Show a badge on README 2024-10-14 22:18:36 -04:00
rust-toolchain.toml feat: v86 9p server support 2024-10-09 20:36:03 -04:00
SECURITY-ACKNOWLEDGEMENTS.md Update SECURITY-ACKNOWLEDGEMENTS.md 2024-07-15 20:03:14 -04:00
SECURITY.md Create SECURITY.md 2024-03-13 16:33:03 -07:00

Puter.com, The Personal Cloud Computer: All your files, apps, and games in one place accessible from anywhere at any time.

The Internet OS! Free, Open-Source, and Self-Hostable.

test GitHub repo size GitHub Release GitHub License

« LIVE DEMO »

Puter.com · SDK · Discord · YouTube · Reddit · X (Twitter) · Bug Bounty

screenshot


Puter

Puter is an advanced, open-source internet operating system designed to be feature-rich, exceptionally fast, and highly extensible. Puter can be used as:

  • A privacy-first personal cloud to keep all your files, apps, and games in one secure place, accessible from anywhere at any time.
  • A platform for building and publishing websites, web apps, and games.
  • An alternative to Dropbox, Google Drive, OneDrive, etc. with a fresh interface and powerful features.
  • A remote desktop environment for servers and workstations.
  • A friendly, open-source project and community to learn about web development, cloud computing, distributed systems, and much more!

Getting Started

💻 Local Development

git clone https://github.com/HeyPuter/puter
cd puter
npm install
npm start

This will launch Puter at http://puter.localhost:4100 (or the next available port).

If this does not work, see First Run Issues for troubleshooting steps.


🐳 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

🐙 Docker Compose

Linux/macOS

mkdir -p puter/config puter/data
sudo chown -R 1000:1000 puter
wget https://raw.githubusercontent.com/HeyPuter/puter/main/docker-compose.yml
docker compose up

Windows

mkdir -p puter
cd puter
New-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 up

☁️ Puter.com

Puter is available as a hosted service at puter.com.


System Requirements

  • Operating Systems: Linux, macOS, Windows
  • RAM: 2GB minimum (4GB recommended)
  • Disk Space: 1GB free space
  • Node.js: Version 16+ (Version 22+ recommended)
  • npm: Latest stable version

Support

Connect with the maintainers and community through these channels:

We are always happy to help you with any questions you may have. Don't hesitate to ask!


License

This repository, including all its contents, sub-projects, modules, and components, is licensed under AGPL-3.0 unless explicitly stated otherwise. Third-party libraries included in this repository may be subject to their own licenses.


Translations