KernelDeimos c2a475f3c0 dev: lay the groundwork for client FS relay
Adds XDIncomingService to manage messages from another window. IPC now
registers with XDIncoming and reports whether it was handled, that way
messages intended to reach GUI can be reliably ignored.

On GUI-side, XDIncomingService will be used by FSRelayService (not yet
implemented) to handle requests for filesystem operations from another
window.

On App-side, XDIncomingService might be used by the PostMessageFS
client-side filesystem implementation terminal to listen for filesystem
events that were relayed by GUI (after a permission check) from their
original websocket source. Either that, or we'll open a filesystem
socket for each app using that app's token.

NoPuterYetService was added because IPC.js is loaded before
globalThis.puter exists, and was the easiest way to still allow IPC's
listener to be registered with XDIncomingService.

APIAccessService was added. This service currently holds auth_token and
api_token and does nothing else. FilesystemService listens to this to
maintain a websocket connection. APIAccessService will help to manage
the complexity of all further code dependent on being informed about
changes to the auth token or origin. Currently in puter.js these are
passed around to several modules which manage the same piece of state
information independantly.
2024-10-18 23:10:19 -04:00
2024-10-14 22:18:36 -04:00
2024-07-25 17:33:10 +02:00
2024-07-09 04:10:33 -04:00
2024-10-09 20:36:03 -04:00
2024-07-22 20:23:40 -04:00
2024-08-23 15:09:25 -04:00
2024-07-18 13:33:02 -07:00
2024-07-07 17:12:55 -04:00
2024-07-09 04:10:33 -04:00
2024-10-10 03:19:28 -04:00
2024-10-14 22:18:36 -04: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

Languages
TypeScript 48.5%
JavaScript 45.8%
CSS 3%
HTML 2.5%