Open-Source Cold Email & Warmup Platform
Warmbly 是開源的冷郵件平台:溫暖您的收件箱、發送活動、並對每個回覆進行分流。可在我們的雲端運行或自行託管整個系統。
AI 翻譯
Papr Work is a local-first app that lets you collaborate with AI agents that can access your computer, remember your context, learn from interactions, and automate workflows.
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗AI-Powered Desktop Assistant — Rebuilt with TypeScript and Mastra
Features • Quick Start • Architecture • Documentation • Contributing
Download the packaged app - no prerequisites needed!
Download the latest release from GitHub Releases
.pkg (recommended — installs to Applications and opens the app) or .zip (manual: unzip → drag to Applications).exe installer.AppImage or .debInstall and run — the Mac PKG and Windows installer can launch the app when setup finishes. Everything is included.
Optional: Sign in with Papr for automatic API key provisioning
No Node.js, npm, or technical setup required. See User Installation Guide for details.
Prerequisites:
Installation:
# 1. Clone the repository
git clone https://github.com/Papr-ai/paprwork.git
cd paprwork
# 2. Use Node v24+ (with nvm)
nvm use 24
# 3. Install all dependencies (includes UI workspace)
npm install
# 4. Configure API keys
cp .env.example .env.local
# Edit .env.local and add your API keys
# 5. Start the application
npm start
Note: This project uses npm workspaces. Running npm install at the root automatically installs dependencies for both the main app and the ui/ workspace. You don't need to run npm install separately in the ui/ folder.
Troubleshooting:
node_modules and ui/node_modules, then run npm install againnode -v should show v24.x.x)# Run in development mode with hot reload
npm run dev
# In separate terminals:
npm run gateway:dev # Gateway process
npm run ui:dev # UI with Vite HMR
npm run electron:dev # Electron app
Paprwork V2 is built with a modern, modular architecture inspired by OpenClaw (179k+ stars):
paprwork-v2/
├── src/
│ ├── core/ # Shared library (zero duplication!)
│ │ ├── agents/ # MastraAgent, SessionManager
│ │ ├── tools/ # Tool implementations
│ │ └── types/ # Type definitions
│ ├── electron/ # Main Electron process (CommonJS)
│ ├── gateway/ # Gateway process for sub-agents & jobs
│ └── resources/ # Agent docs, skills, templates
├── ui/ # React UI (Vite + TypeScript)
├── docs/ # Documentation
└── tests/ # Comprehensive test suite
any typesoxlint and oxfmt for 50-100x faster dev workflowThe desktop app can send anonymous, coarse usage events (for example app started or quit) to help measure adoption. This follows the same proxy pattern as Papr Memory OSS: the app never embeds an Amplitude API key; events are POSTed to https://memory.papr.ai/v1/telemetry/events, and the server forwards to Amplitude.
electron unpackaged). Change anytime under Settings → Privacy. PAPRWORK_TELEMETRY_ENABLED=true|false still overrides the stored preference.PAPRWORK_TELEMETRY_ENABLED=false (forces off regardless of package default).PAPRWORK_TELEMETRY_URL to your own proxy base URL (must be http:// or https://). Set PAPRWORK_TELEMETRY_URL= (empty) to block all telemetry network calls.src/core/telemetry/.paprwork_job_failed, paprwork_scheduler_cron_parse_error, throttled paprwork_scheduler_tick) with no stack traces and no stderr. This helps spot patterns in Amplitude; it is not a full crash/bug reporter. For deep production error tracking, add something like Sentry separately.# Run all checks (type-check + format + lint + LOC)
npm run check
# Format code with oxfmt (Rust, 30x faster)
npm run format
# Lint with oxlint (Rust, 50-100x faster)
npm run lint
# Type checking (TypeScript)
npm run type-check
# Run all tests
npm run test
# Unit tests (backend)
npm run test:unit
# Unit tests (UI)
npm run test:ui
# Integration tests
npm run test:integration
# E2E tests
npm run test:e2e
# Watch mode
npm run test:watch
# Build all components
npm run build
# Build individual components
npm run build:gateway
npm run build:electron
npm run build:ui
# Package for distribution
npm run package
Paprwork V1 accumulated technical debt over time:
V2 is a complete greenfield rewrite focused on:
We welcome contributions! Please see our Contributing Guidelines for details.
any types - always use proper typingnpm run check:loc)npm run check before committingGNU Affero General Public License v3.0 - see LICENSE for details.
Built with ❤️ using TypeScript, Electron, and Mastra