Skip to content
daemon · uptime 4d 03h 12m 41s

An always-on coding agent — that keeps working while you sleep.

Electron desktop and CLI for Claude agents. Both speak to one detached daemon over 127.0.0.1 — so long runs survive terminal exit, app restart, and the occasional crash.

npm i -g helm-agent
View on GitHub

built on @anthropic-ai/claude-agent-sdk · node ≥ 20 · macOS · linux · windows

helm — workspace · default SSE 127.0.0.1:42424
$ helm session tail nightly-review
[02:47] reviewed 14 PRs · 3 flagged
[03:12] cron daily-summary → sent to #eng-leads
[03:41] queue drained · 12 issues triaged
[04:18] eval regression-suite · 96.4% pass
· daemon idle · next cron in 4h 42m
$

quit the terminal — the daemon keeps producing tokens.

[ 01 ] Why

Most agent setups are one-shot scripts.
Helm is a runtime.

Lifecycle, sessions, approvals, schedules, queues — managed. Workable from both GUI and terminal against the same engine. Started in one, picked up in the other, finished while you're asleep.

$ helm daemon status running · pid 84211 · uptime 4d 03h live

[ 02 ] Hero feature

pillar · cli & daemon

Kill the terminal.
The daemon doesn't care.

The helm binary ships on npm as helm-agent. The work happens in a detached Bun HTTP+SSE daemon — with a lockfile, zombie detection, and a clean SIGTERM shutdown. Close your terminal, restart the app, reboot the daemon survives all three.

  • detached process, survives exit
  • lockfile + zombie detection
  • clean SIGTERM shutdown
  • helm server for remote/multi-daemon
step 1 / 4
~/projects/myapp
$ helm session tail default
→ assistant
Reading src/log.ts
tokens streaming over SSE
⌃C to detach
daemon
pid84211
port42424
uptime4d 03h 12m
sessionstreaming
queue2 in flight
no clients attached — still working.
  1. 1 · alive
  2. 2 · kill terminal
  3. 3 · no clients
  4. 4 · reattach

[ 03 ] Three more pillars

01Desktop.·02Automation.·03Extensibility.

Pillar · desktop

Sessions, side by side.

Electron shell with React 19 and Tailwind 4. Streaming markdown, attachments, async tool-approval prompts. Native tray, deep-links, auto-update.

user
refactor logger to pino
approve write src/log.ts?
Pillar · automation

Queues. Cron. Loops. Evals.

Per-workspace issue queue, unattended loop worker with pre/post scripts and crash-resume, classic cron + one-shot at, spec-based helm eval, delivery to Telegram, DingTalk, WeCom, or webhooks.

triage
2
todo
7
in_prog
3
done
41
Pillar · extensibility

Multi-provider, multi-workspace.

Secrets in the OS keychain (0600 fallback); keys are never read back over HTTP. Each workspace owns its provider, model, permission mode, and optional SOUL.md persona. Fork sessions, rewind file state, deep-search chats. Skills and Plugins install at user, project, or local scope.

anthropic sdk-default + custom

[ 04 ] Permission modes

You decide how much rope.

Each workspace gets its own permission mode. Tasks scheduled by cron can override. Click a mode to see what an agent does next.

legal values, exactly:

default · acceptEdits · bypassPermissions · plan

Permission mode
assistant
Refactoring src/log.ts to use pino.
approval needed
write src/log.ts · 24 lines changed
assistant
Refactoring src/log.ts
✓ wrote src/log.ts · 24 lines
✓ wrote src/log.test.ts · 9 lines
approval needed
run bun test src/log.test.ts
assistant
✓ wrote src/log.ts · 24 lines
✓ wrote src/log.test.ts · 9 lines
✓ ran bun test · 14 passed
✓ ran git add . && git commit -m "refactor: pino"
Done. no prompts — 0.42s of human time.
assistant
Plan to migrate logger:
  1. 1. Replace winston imports in 6 files.
  2. 2. Initialize pino in src/log.ts with redaction.
  3. 3. Update tests to capture stdout.
  4. 4. Add CHANGELOG entry.
read-only mode — no files were written.
set per workspace: helm workspace new myapp --permission-mode default

[ 05 ] How it works

The daemon sits above its clients.

Stream tokens flow up to whichever client is attached. Drop the client — the stream keeps producing, buffered by the daemon. Reattach to catch up.

layer · model

Claude Agent SDK

@anthropic-ai/claude-agent-sdk

daemon · outlives clients
engine

Bun HTTP+SSE

127.0.0.1:42424

sessions
12
queue
4 / 5
cron
7 jobs
evals
queued 1
pid
84211
uptime
4d
client · /cli

helm CLI

terminal flow

either, neither, both
client · /desktop

Electron app

windowed sessions

Six
commands.

install · setup · chat · queue · cron · eval

commands config output
# commands · type these
npm i -g helm-agent
helm daemon start
tip: bare helm setup opens the wizard — no flags needed.

Last three releases — pulled live from the repo.

the dot in the nav lights up when the newest is under 14 days old.

[ 08 ] Install

Two lines from zero
to an always-on agent.

~/projects
npm i -g helm-agent
helm setup

Install, then run helm setup — the wizard configures a provider, workspace, and (optional) delivery channel.

desktop app is currently macOS · CLI runs on macOS, Linux, Windows · requires Node ≥ 20

open feedback, public issues · github.com/helm-agent/helm-agent

Changelog

Every release of Helm.

Notes mirror the GitHub Releases feed. feat, fix, chore, and docs entries are tagged as chips.

Loading releases…