Modern desktop automation for Windows — a Task Scheduler–style app with a visual workflow builder, triggers, actions, execution logs, and optional AI-assisted drafts.
ForgeTask desktop app (v2.1.0).
| Workflows | Triggers |
|---|---|
![]() |
![]() |
| Actions | Execution logs |
|---|---|
![]() |
![]() |
| Settings (organization license & preferences) |
|---|
![]() |
Unlocked with an organization license key (see PLAN.md §20). Screenshots also show advanced trigger/action catalog entries available in Pro.
| AI Workflow Assistant | Variables |
|---|---|
![]() |
![]() |
| Marketplace (templates) | Analytics dashboard |
|---|---|
![]() |
![]() |
Same license tier as Pro for IPC unlock; Team, API Access, and Audit Logs are grouped under Enterprise in the app.
| Team management | API Access (local REST) |
|---|---|
![]() |
![]() |
| Audit logs |
|---|
![]() |
The Free tier includes core automation (workflows, basic triggers/actions, logs, settings). Pro and Enterprise capabilities (AI Assistant, Variables, Marketplace, Analytics, Team, API Access, Audit Logs, advanced triggers/actions) require an organization license key; see PLAN.md §20 for entitlement and optional online validation.
- Electron (main process + preload)
- Angular 19 (standalone components, lazy routes)
- Tailwind CSS v4
- SQLite (
better-sqlite3) for workflows, logs, variables, audit trail - Express local API (
127.0.0.1:38474) to trigger workflows with a Bearer token
| Command | Description |
|---|---|
npm start |
Angular dev server only (browser; IPC mocked) |
npm run electron:dev |
Angular ng serve + Electron with hot reload against http://127.0.0.1:4200 |
npm run build:all |
Production Angular build + compile Electron dist-electron/ |
npm run electron |
Compile Electron and launch (loads built Angular from dist/) |
npm run electron:dist |
Build + Windows NSIS installer via electron-builder |
npm run rebuild:native |
Recompile better-sqlite3 for the installed Electron Node ABI (run after npm install or upgrading Electron) |
- Install dependencies:
npm install(runs@electron/rebuildforbetter-sqlite3via theelectron-rebuildCLI). - Run
npm run electron:dev— wait for the UI, then use the app. npm start(Angular only): Settings and API Access show dummy keys for UI layout (src/app/core/local-dev-keys.ts). They are not sent to OpenAI. The REST placeholder authenticates unpackaged Electron only (npm run electron/electron:dev); packaged installs require the realtf_live_…key from the database.- Data file:
%APPDATA%/TaskForge/taskforge.db(ElectronuserData). If you upgraded from an older install, SQLite may be copied once from the legacy paths defined inelectron/legacy-paths.ts(historical%APPDATA%folder names on disk).
If the window never opens and the console shows NODE_MODULE_VERSION / “compiled against a different Node.js version”, run npm run rebuild:native so the native module matches Electron (not your system Node).
The AI Workflow Assistant can call a local gateway instead of OpenAI. The gateway lives in local-ai-gateway/ (intended as its own Git repo or git submodule). TaskForge sends prompt + optional chat history to POST /v1/taskforge/workflow-completion; the gateway applies the workflow system prompt and forwards only to loopback Ollama (no remote upstream). You can bundle the Ollama binary under local-ai-gateway/binaries/ so npm start runs ollama serve in-house — see local-ai-gateway/binaries/README.md.
- Provide a local model (e.g.
ollama pull llama3.2) with Ollama running, or place a bundledollamabinary and runnpm startfromlocal-ai-gateway/(default gatewayhttp://127.0.0.1:11435). - See
local-ai-gateway/README.mdfor env vars (upstream URL must stay loopback, optional Bearer token,TASKFORGE_MANAGE_OLLAMA). - In Settings → AI Workflow Assistant, choose Local gateway, confirm the base URL and model, then Save AI settings.
If you use submodules: git submodule update --init --recursive after clone.
Legacy strings: electron/legacy-paths.ts and src/app/core/legacy-onboarding-key.ts are the only places that still embed historical folder names, SQLite filenames, localStorage keys, email, or dev HMAC material from pre-TaskForge installs. They exist so migrations keep working; everything else uses TaskForge naming.
electron-updater runs checkForUpdatesAndNotify() when app.isPackaged is true. Configure publish in electron-builder (e.g. GitHub releases) for production updates.
curl -X POST http://127.0.0.1:38474/v1/workflows/run \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"workflow_id\":\"YOUR_WORKFLOW_ID\",\"params\":{}}"Retrieve or regenerate the key in Enterprise → API Access (requires an active Pro/Enterprise license).
TaskForge is released under the GNU General Public License v3.0 (GPL-3.0). See the license file for the full terms.
If you distribute modified versions, follow the GPL’s source-offer and license-preservation requirements. Combining this code with proprietary services or add-ons may require careful separation and legal review.
Copyright © 2026 Jared Scarito.
- Build:
npm run build && npm run build:electronshould pass. - Secrets: Do not commit production
TASKFORGE_ENTITLEMENT_SECRET, API keys, or signing certificates; use CI secrets for release builds. - Plan vs UI: The app references “PLAN.md §20” in the sidebar; keeping
PLAN.mdin the repo keeps that accurate for contributors.













