José AlbornozandMohamed Boudra bb560809c7 Add support for Nix and NixOS (#130)
* fix: add missing resolved/integrity fields to package-lock.json

npm omits resolved URLs and integrity hashes for workspace-local
node_modules overrides. This breaks offline installers like Nix's
npm ci. Add the missing fields for 25 workspace-hoisted packages.

* feat: add Nix flake with package and NixOS module

Add a Nix flake that builds the Paseo daemon (server + CLI) and
provides a NixOS module for declarative deployment.

Package (nix/package.nix):
- Builds relay, server, and CLI workspaces
- Skips onnxruntime-node install script (sandbox-incompatible)
- Rebuilds only node-pty for native terminal support
- Source filter excludes app/website/desktop workspaces

NixOS module (nix/module.nix):
- Systemd service with configurable user, port, listen address
- allowedHosts for DNS rebinding protection
- relay.enable to toggle remote access via app.paseo.sh
- inheritUserEnvironment to expose user tools (git, ssh) to agents
- openFirewall and extra environment variables

ci: add Nix hash maintenance scripts and workflows

scripts/fix-lockfile.mjs:
  Adds missing resolved/integrity fields to package-lock.json for
  workspace-local overrides. Idempotent, uses `npm view`.

scripts/update-nix.sh:
  Runs fix-lockfile.mjs, prefetches deps, computes NAR hash, and
  updates npmDepsHash in nix/package.nix. Supports --check for CI.

.github/workflows/nix-build.yml:
  Builds the Nix package on push/PR and verifies the lockfile and
  hash are up to date.

.github/workflows/fix-nix-hash.yml:
  Auto-fixes lockfile signatures and Nix hash on dependabot PRs.

fix: update npmDepsHash after upstream sync

nix: allowlist workspace symlinks instead of blocklist

Prevents build failures when upstream adds new workspace packages.

* don't block PRs on nix failures

* better document npm workaround

* fix hash update script, and update hash

* integrate with npm run build:daemon

* ci: trigger nix build on highlight changes

* fix(nix): update npmDepsHash

---------

Co-authored-by: Mohamed Boudra <boudra.moha@gmail.com>
2026-03-25 23:42:44 +07:00
2026-03-25 23:42:44 +07:00
2026-03-06 16:49:40 +01:00
2026-03-06 16:49:40 +01:00
2026-03-25 23:42:44 +07:00
2026-02-25 13:53:23 +07:00

Paseo logo

Paseo

One interface for all your coding agents.

Paseo app screenshot


Run agents in parallel on your own machines. Ship from your phone or your desk.

  • Self-hosted — Agents run on your machine with your full dev environment. Use your tools, your configs, and your skills.
  • Multi-provider — Claude Code, Codex, and OpenCode through the same interface. Pick the right model for each job.
  • Voice control — Dictate tasks or talk through problems in voice mode. Hands-free when you need it.
  • Cross-device — iOS, Android, desktop, web, and CLI. Start work at your desk, check in from your phone, script it from the terminal.

Getting Started

Download the desktop app from paseo.sh or the GitHub releases page — it bundles the daemon so there's nothing else to install.

Headless / server mode

To run the daemon on a remote or headless machine:

npm install -g @getpaseo/cli
paseo

Then connect from the desktop app, mobile app, or CLI.

For full setup and configuration, see:

Development

Quick monorepo package map:

  • packages/server: Paseo daemon (agent process orchestration, WebSocket API, MCP server)
  • packages/app: Expo client (iOS, Android, web)
  • packages/cli: paseo CLI for daemon and agent workflows
  • packages/desktop: Electron desktop app
  • packages/relay: Relay package for remote connectivity
  • packages/website: Marketing site and documentation (paseo.sh)

Common commands:

# run all local dev services
npm run dev

# run individual surfaces
npm run dev:server
npm run dev:app
npm run dev:website

# repo-wide checks
npm run typecheck

License

AGPL-3.0

Languages
TypeScript 97.8%
JavaScript 1.6%
Shell 0.2%