Download

Elk, native.
Desk and pocket.

The same calm workspace — talk, plan, build — as a real app. A signed Mac download and a TestFlight beta for iPhone & iPad.

Elk for macOS — the Themes view
Elk for iPhone — the List, with items checked off

macOS

Direct download · notarized

A native Mac app, signed and notarized. Download the disk image, drag Elk to Applications, done.

macOS 14 Sonoma or later · Apple silicon & Intelv1.0

iPhone & iPad

Public beta · TestFlight

Elk on iOS is in open beta through TestFlight. Install Apple’s TestFlight app, tap the invite, and you’re in.

iOS 17 or later · TestFlight app requiredv1.0
Connect Claude

Capture straight from Claude.

Elk's connector lets Claude file the decisions from any working session into your workspace — automatically, so you never have to remember to “add to Elk.”

0 First, grab your personal connector URL: Elk for Mac → Tweaks → Elk Connector → Copy. One URL covers all your workspaces — each capture files to the right one automatically, and if Elk can't tell which one, Claude asks you instead of guessing. Each snippet below has a PASTE-YOUR-CONNECTOR-URL placeholder — swap it for yours.

Claude Code

One paste · fully automatic

Paste this into any Claude Code chat. Claude installs the connector, teaches itself to capture at milestones, and adds a safety net that captures long sessions before context is lost.

Set up Elk capture for me. My Elk connector URL: PASTE-YOUR-CONNECTOR-URL
(If that still says PASTE-YOUR-CONNECTOR-URL, stop and ask me for it — it's in Elk for Mac → Tweaks → Elk Connector.)

1. Register the connector at user scope:
   claude mcp add --transport http --scope user elk "<my connector URL>"

2. Append this to ~/.claude/CLAUDE.md (create it if missing):

   ## Elk capture
   - When we finish a task, make a real decision, or wrap up a thread — and whenever I say "add to elk" — call the elk `capture_to_elk` tool: one-line title, 2-5 sentence summary, decisions actually made, open questions, and a few short verbatim excerpts. Quote excerpts exactly; never invent decisions. Don't ask first; confirm in one line after.
   - Always set the tool's `workspace` field to the project this session is about — use the repo/folder I'm working in (the cwd's basename) or the project's name. Elk files the capture into that workspace and replies with where it landed; relay that to me so a misfile is obvious.
   - If Elk answers with a question instead of filing (it wasn't sure which workspace), nothing was stored yet: relay the question and the workspace options to me, then call `capture_to_elk` again with the same content and `workspace` set to my answer.

3. Create ~/.claude/hooks/elk-stop-capture.sh, chmod +x, containing exactly:

   #!/bin/bash
   IN=$(cat)
   printf '%s' "$IN" | grep -q '"stop_hook_active": *true' && exit 0
   TP=$(printf '%s' "$IN" | sed -n 's/.*"transcript_path": *"\([^"]*\)".*/\1/p')
   [ -f "$TP" ] || exit 0
   SZ=$(wc -c < "$TP")
   [ "$SZ" -lt 3000000 ] && exit 0
   MK="$TP.elk-captured"
   LAST=$(cat "$MK" 2>/dev/null || echo 0)
   [ $((SZ - LAST)) -lt 1000000 ] && exit 0
   echo "$SZ" > "$MK"
   echo '{"decision":"block","reason":"This session is getting long. Before context is lost, call the elk capture_to_elk tool now: title, 2-5 sentence summary, decisions actually made, open questions, key verbatim excerpts. Then finish your reply."}'
   exit 0

4. Merge into ~/.claude/settings.json without clobbering existing hooks:
   "hooks": { "Stop": [ { "hooks": [ { "type": "command", "command": "~/.claude/hooks/elk-stop-capture.sh" } ] } ] }

5. Verify each step worked, then capture THIS conversation to Elk as a test and tell me what you filed.

You have my standing permission to send these captures to my Elk workspace.

claude.ai

Two steps · works everywhere

Add the connector once, then give Claude a standing instruction so every chat captures its decisions — no per-chat setup.

  1. Settings → Connectors → Add custom connector — name it Elk, paste your connector URL.
  2. Paste this into Settings → Profile (personal preferences) so it applies to every chat — or into any single chat:
I use Elk to keep a shared record of what gets decided while I work. When we finish a task, make a real decision, or wrap up a thread — and whenever I say "add to elk" — use the Elk connector's capture_to_elk tool: one-line title, 2-5 sentence summary, decisions actually made, open questions, and a few short verbatim excerpts. Set the tool's workspace field to the project this chat belongs to (the Claude Project's name, or the project we're discussing) so it files to the right Elk workspace, and tell me where it filed. If Elk responds with a question instead of filing (it wasn't sure which workspace), nothing was stored yet — ask me which workspace, then call the tool again with the same content and my answer. Quote excerpts exactly, never invent decisions, and confirm in one line after. You have my standing permission to send these captures to Elk.
Safe to install

Signed & notarized

The Mac build is Developer-ID signed and notarized by Apple — Gatekeeper opens it without a warning.

One workspace

Everything syncs

Sign in with your workspace and your streams, themes, and actions are already there — Mac and iOS in step.

While in beta

Free to use

Elk is free during the beta. Pricing comes later; for now, bring your team and put it to work.