ryOS, made with Cursor
See the codeA modern web-based desktop environment inspired by classic macOS and Windows, built with React, TypeScript, and AI. Features multiple built-in applications, a familiar desktop interface, and a system-aware AI assistant. Works on all devices—desktop, tablet, and mobile.
Read ryOS Docs — Architecture, API reference, and developer guides
ryo <prompt>)├── api/ # API route handlers (Node-style, served by the standalone Bun server)
├── electron/ # Electron shell, menu, preload, and updater
├── ios/ # Native iOS WKWebView shell (Xcode project, see ios/README.md)
├── public/ # Static assets (icons, wallpapers, sounds, fonts)
├── scripts/ # Build + maintenance + standalone API runner
├── tests/ # Bun test suites (unit/<domain>, integration/api, helpers)
├── src/
│ ├── api/ # Frontend API clients
│ ├── apps/ # Individual app modules
│ ├── components/ # Shared React components (ui, dialogs, layout)
│ ├── config/ # Configuration files
│ ├── hooks/ # Custom React hooks
│ ├── lib/ # Libraries and utilities
│ ├── services/ # VFS and realtime service facades
│ ├── shared/ # Shared contracts and domain types
│ ├── stores/ # Zustand state management
│ ├── styles/ # CSS and styling
│ ├── sync/ # Cloud Sync v2 client engine
│ ├── themes/ # OS theme definitions
│ ├── types/ # TypeScript definitions
│ ├── utils/ # Utilities
│ └── workers/ # Web workers
REDIS_URL)bun run dev # Start full stack (API + Vite with proxy) — the default
bun run dev:vite # Start Vite dev server only (frontend-only, no API)
bun run dev:api # Start standalone Bun API server only (port 3000)
bun run build # Build for production
bun run start # Start the self-host/Coolify production server
bun run lint # Run ESLint
bun run preview # Preview production build
bun run api:start # Run standalone API server in production mode
bun run electron:dev # Bundle and launch the Electron shell for local Vite
bun run electron:build # Build desktop artifacts with electron-builder
For local development, bun run dev starts both the standalone Bun API server and the Vite dev server with an /api proxy.
Use this when you only need the API server (e.g. for running tests):
# Terminal 1 - standalone API (loads .env/.env.local)
bun run dev:api
# Terminal 2 - frontend (optional, if you also need the UI)
bun run dev:vite
The standalone API listens on:
API_PORT (fallback: PORT, then 3000)API_HOST (fallback: 0.0.0.0)You can run API tests directly against it:
API_URL=http://localhost:3000 bun run test:new-api
Unit and integration suites use Bun's native runner:
bun run test:unit # Unit/wiring suites without a server
bun run test:api # API integration suites; requires bun run dev:api
ryOS now supports a single Bun production server for self-hosting and container platforms like Coolify. That server handles:
/api/*dist/bun install
bun run build
APP_PUBLIC_ORIGIN="https://your-domain.com" \
API_ALLOWED_ORIGINS="https://your-domain.com" \
bun run start
Use either:
# Standard Redis / Valkey / self-hosted Redis
REDIS_URL="redis://default:password@redis:6379/0"
or:
# Upstash REST
REDIS_KV_REST_API_URL="https://..."
REDIS_KV_REST_API_TOKEN="..."
Use either:
# Existing Pusher path
REALTIME_PROVIDER="pusher"
PUSHER_APP_ID="..."
PUSHER_KEY="..."
PUSHER_SECRET="..."
PUSHER_CLUSTER="us3"
or:
# Local websocket path (best paired with REDIS_URL)
REALTIME_PROVIDER="local"
REALTIME_WS_PATH="/ws"
Detailed runbook: docs/1.3-self-hosting-vps.md
bun run test:unit and bun run build.main build and publish the GHCR image for Coolify deploys.v* tags build signed Electron releases for macOS and Windows with update feeds.AGPL-3.0 — See LICENSE for details.
Contributions welcome! Please submit a Pull Request.
(top 24 of 26)
1,681 followers · starred Jun 2025
345 followers · starred May 2025
1,323 followers · starred Jul 2026
5,830 followers · starred May 2025
ryOS, made with Cursor
See the codeA modern web-based desktop environment inspired by classic macOS and Windows, built with React, TypeScript, and AI. Features multiple built-in applications, a familiar desktop interface, and a system-aware AI assistant. Works on all devices—desktop, tablet, and mobile.
Read ryOS Docs — Architecture, API reference, and developer guides
ryo <prompt>)├── api/ # API route handlers (Node-style, served by the standalone Bun server)
├── electron/ # Electron shell, menu, preload, and updater
├── ios/ # Native iOS WKWebView shell (Xcode project, see ios/README.md)
├── public/ # Static assets (icons, wallpapers, sounds, fonts)
├── scripts/ # Build + maintenance + standalone API runner
├── tests/ # Bun test suites (unit/<domain>, integration/api, helpers)
├── src/
│ ├── api/ # Frontend API clients
│ ├── apps/ # Individual app modules
│ ├── components/ # Shared React components (ui, dialogs, layout)
│ ├── config/ # Configuration files
│ ├── hooks/ # Custom React hooks
│ ├── lib/ # Libraries and utilities
│ ├── services/ # VFS and realtime service facades
│ ├── shared/ # Shared contracts and domain types
│ ├── stores/ # Zustand state management
│ ├── styles/ # CSS and styling
│ ├── sync/ # Cloud Sync v2 client engine
│ ├── themes/ # OS theme definitions
│ ├── types/ # TypeScript definitions
│ ├── utils/ # Utilities
│ └── workers/ # Web workers
REDIS_URL)bun run dev # Start full stack (API + Vite with proxy) — the default
bun run dev:vite # Start Vite dev server only (frontend-only, no API)
bun run dev:api # Start standalone Bun API server only (port 3000)
bun run build # Build for production
bun run start # Start the self-host/Coolify production server
bun run lint # Run ESLint
bun run preview # Preview production build
bun run api:start # Run standalone API server in production mode
bun run electron:dev # Bundle and launch the Electron shell for local Vite
bun run electron:build # Build desktop artifacts with electron-builder
For local development, bun run dev starts both the standalone Bun API server and the Vite dev server with an /api proxy.
Use this when you only need the API server (e.g. for running tests):
# Terminal 1 - standalone API (loads .env/.env.local)
bun run dev:api
# Terminal 2 - frontend (optional, if you also need the UI)
bun run dev:vite
The standalone API listens on:
API_PORT (fallback: PORT, then 3000)API_HOST (fallback: 0.0.0.0)You can run API tests directly against it:
API_URL=http://localhost:3000 bun run test:new-api
Unit and integration suites use Bun's native runner:
bun run test:unit # Unit/wiring suites without a server
bun run test:api # API integration suites; requires bun run dev:api
ryOS now supports a single Bun production server for self-hosting and container platforms like Coolify. That server handles:
/api/*dist/bun install
bun run build
APP_PUBLIC_ORIGIN="https://your-domain.com" \
API_ALLOWED_ORIGINS="https://your-domain.com" \
bun run start
Use either:
# Standard Redis / Valkey / self-hosted Redis
REDIS_URL="redis://default:password@redis:6379/0"
or:
# Upstash REST
REDIS_KV_REST_API_URL="https://..."
REDIS_KV_REST_API_TOKEN="..."
Use either:
# Existing Pusher path
REALTIME_PROVIDER="pusher"
PUSHER_APP_ID="..."
PUSHER_KEY="..."
PUSHER_SECRET="..."
PUSHER_CLUSTER="us3"
or:
# Local websocket path (best paired with REDIS_URL)
REALTIME_PROVIDER="local"
REALTIME_WS_PATH="/ws"
Detailed runbook: docs/1.3-self-hosting-vps.md
bun run test:unit and bun run build.main build and publish the GHCR image for Coolify deploys.v* tags build signed Electron releases for macOS and Windows with update feeds.AGPL-3.0 — See LICENSE for details.
Contributions welcome! Please submit a Pull Request.
(top 24 of 26)
1,681 followers · starred Jun 2025
345 followers · starred May 2025
1,323 followers · starred Jul 2026
5,830 followers · starred May 2025