Repository navigation
Releases
Zagon 0.1.9
Mac app: other Claude Code accounts always in the menu bar icon.
Mac app: the menu bar icon
- Another Claude Code account (a second
CLAUDE_CONFIG_DIR, e.g. "corp") now always shows in the menu bar icon: a small ring in a ring of its own next to your default account's rings, the week outside and 5 hours inside, with the higher of the two numbers inside. In 0.1.8 it showed only from 80 %. - From 80 % in either window its number turns red and the icon is no longer monochrome, as in 0.1.8; from 95 % its ring turns red too.
- With Claude and Codex both shown, the other account stands between them: Claude, Claude · corp, Codex, as in the panel.
- Settings → Menu bar → "Other Claude Code accounts in the icon only from 80 %" brings back the 0.1.8 behaviour. Off by default.
- Each other account adds 24 pt to the icon: 68 pt with one, 92 pt with two.
Updating
No schema change: 0.1.9 uses the v9 database of 0.1.8.
Zagon 0.1.8
Mac app: other Claude Code accounts as rings, servers' background sessions after the update, a clearer line under the rings.
Mac app: other accounts
- Another Claude Code account (a second
CLAUDE_CONFIG_DIR, e.g. "corp") is now drawn like the first one: a ring in a ring of its own, the week outside and 5 hours inside, named "Claude · corp", in the panel of the menu bar and on Sessions. With more than one account every block is a ring in a ring, two to a row: Claude, its other accounts, then Codex. The text line under the rings is gone. - With another account the pace view gives way to the rings, as it does when Claude and Codex are both shown.
- The menu bar icon still shows your default account. Another account joins it as a small ring in a ring of its own only when one of its windows reaches 80 %, with that number inside; the icon's tooltip names every account.
Mac app: background sessions of a server
- A Mac that pulled a 0.1.7 server before it was updated itself kept that server's sessions without their background tasks, and sessions that did not change since were never sent again: workers still running background tasks read "driven by … · turn ended". The Mac now pulls a server from the start once when its own schema or the server's changes, and such sessions are listed as working: "in background (2 tasks) · 24 min".
Mac app: the line under the rings
- "New readings come with the next reply" now says whose: "Codex: new readings come with its next reply." It used to stand under a Claude ring at 0 % when only Codex's 5-hour window had no reading, and read as if Claude's 0 % were missing data. (0 % right after a reset is the real reading.)
Updating
No schema change: 0.1.8 uses the v9 database of 0.1.7. The first pull of each server after the update takes its whole history once (a few MB).
Zagon 0.1.7
The Mac's 5-hour ring back after the 0.1.6 update; "sessions worked" in wall-clock time everywhere; sessions whose turn ended but background tasks still run.
Mac app: the 5-hour ring
- After updating to 0.1.6, a Mac that merges a server with two Claude Code accounts could lose its 5-hour ring: the server's older zagon had stored the other account's 5-hour readings as this account's, and that window resets later, so it stayed "current" and the ring was hidden as if the plan had no 5-hour window. A reading now stops counting once newer readings of this account come in without it; the other account keeps its own line under the rings.
Sessions worked
- "Sessions worked" is now wall-clock time in every place that shows it:
zagon today/day/week, MCPday/week/range/export_day, the bot's /day and /week, the evening summary, period summaries, and the Mac app (the "sessions worked" tile on Sessions and Day, the week, the calendar). Three sessions working the same two hours count two hours, not six; sessions working 10–12 and 11–13 count three hours. - The sum over sessions stays as a second number, "agent time", shown when it is a minute or more over the wall-clock time ("sessions 2h 00m (agent time 6h 00m)");
--jsonhasworked_secnext tosession_sec. A week is the sum of its days.
Sessions working in background
- A Claude Code session whose turn has ended while its background tasks still run (background shells, agents started in the background, monitors) is now "working in background": it is listed with the working sessions in
zagon sessions, MCPsessions/status, the bot's /sessions and the Mac app, sends no "finished" alert while they run, and its "waiting for you" alert comes only after[notify] waiting_background_minutes(60 by default; 0 = never), in case a task runs for good (a dev server, a monitor) while the session waits for you. Background tasks count for 12 hours at most. Zagon reads this from the session's transcript: the launch of each background task and the notice Claude Code writes when it ends; a new start of the session clears what was left. - A session driven by another session (over
tmux send-keys) with nothing running in the background no longer "waits for session X": it reads "driven by X · turn ended 12 min ago".
Before you update a server
0.1.7 moves the database to schema v9, and 0.1.6 does not open a v9 database. zagon update keeps a copy of the database before it replaces the binary and prints how to roll back. On the first start 0.1.7 reads once more the Claude transcripts changed in the last 12 hours, so background tasks started before the update are known.
Zagon 0.1.6
Mac, first launch: Zagon.app is ad-hoc signed, not notarized, so macOS blocks it the first time. Open Zagon.dmg and drag Zagon to Applications; open it from there and click Done when macOS says it cannot verify the developer; then System Settings → Privacy & Security → Open Anyway next to the Zagon message, and confirm. Only once: after that the app updates itself.
Before you update a server: 0.1.6 moves the database to schema v8, and 0.1.5 does not open a v8 database. zagon update run by 0.1.5 keeps a copy of the database as zagon.db.v7 before it replaces the binary and prints how to roll back (zagon.prev + that copy).
Two Claude Code accounts on one machine, kept apart; task suggestions in wall-clock time.
Two Claude Code accounts
- A second Claude Code account on the same machine (
CLAUDE_CONFIG_DIR=~/.claude-work claude …next to the usual~/.claude): once that account runs Zagon's hooks and status line too (its ownsettings.json, or a link to~/.claude/settings.json), its first hook adds its transcripts (<dir>/projects), so its sessions get their titles, models, tokens and time, and the service picks the new folder up by itself (it restarts in place).[accounts]in~/.zagon/config.tomladds it at once. - Sessions are marked with their account:
(work)next to the title inzagon sessions, MCPsessions/day, the bot's /sessions and the "waiting for you" / "finished" notifications, and in the Mac app. - Limits are read, kept and shown per account: the status line says which account it runs for, so one account's window no longer replaces the other's.
zagon today, MCPlimits/statusand the bot's /limits list each account ("Claude (work) week: 3% used"); with one account nothing changes. - Limit notifications per account, with its name ("Claude (work): weekly limit — 95%"); other thresholds for one account in
[notify.limits.<account>], the rest come from[notify.limits]. - The account's name is its folder's (
.claude-work→work) unless[accounts]in~/.zagon/config.tomlnames it ("~/.claude-work" = "work"); the usual account isdefault, or[limits] account. - Session summaries (
zagon handoff, MCPhandoff_create, the Mac's "Copy summary") find sessions of every account. - Mac app: the rings and the menu-bar icon show the usual account as before (another account when only that one was used in the last 8 days, with its name in the header); every other account gets one line under the rings ("Claude · work 5h 23% · week 58% resets at 15:30"); sessions of another account say
(work)after the title in the session list, the day's lanes and "what was done". - Update the Mac app together with the server: a 0.1.5 Mac skips the other accounts' limits (it shows the usual account's only); 0.1.6 pulls its servers once more to get the accounts.
- Readings taken before the update cannot be told apart: 0.1.5 stored every account's readings as one. They count for the usual account until their windows end.
- Sessions known only from hooks (before their transcript is read) now belong to the machine they ran on: the Mac no longer lists a server's such session under the Mac itself.
Task suggestions
- The evening "task suggestions" no longer add up parallel sessions: a new task's time and the day's total are wall-clock (three sessions working the same two hours count two hours, not six). Each line still shows the time of its own session; the first line gives the total ("4 h 30 min in all"), and
--jsonhasworked_sec.
Zagon 0.1.5
Mac, first launch: Zagon.app is ad-hoc signed, not notarized, so macOS blocks it the first time. Open Zagon.dmg and drag Zagon to Applications; open it from there and click Done when macOS says it cannot verify the developer; then System Settings → Privacy & Security → Open Anyway next to the Zagon message, and confirm. Only once: after that the app updates itself.
Before you update a server: 0.1.5 moves the database to schema v7, and 0.1.4 does not open a v7 database, so the zagon.prev that zagon update leaves cannot roll you back. Save the database first (the update is run by the old binary, so it cannot do this for you): quit the open Claude Code and Codex sessions (their zagon mcp uses the database), stop the one service that runs (systemctl --user is-active zagon and systemctl is-active zagon-<user> tell which) with systemctl --user stop zagon or sudo systemctl stop zagon-<user>, run mkdir -p ~/zagon-backup && cp -p ~/.zagon/zagon.db* ~/zagon-backup/, then zagon update (sudo zagon update for /usr/local/bin) and start that service again with systemctl --user start zagon or sudo systemctl start zagon-<user>: the update restarts only a running service. The first start re-links the task keys of the last 14 days once (about a minute on a busy server). Updates run by 0.1.5 or later keep such a copy by themselves.
Worklog texts for every row of the day's plan, Cursor's agent counted next to Claude Code and Codex, Jira and notifications set up by answering a few questions, hours for invoices, MCP status and plan edits, a stricter zagon doctor and safer updates, and the Mac app in tabs with a light theme.
Worklogs
- Worklog texts: each row of the plan gets 1–2 sentences about its own stretch of work, and the longest row of each task the day's summary (what the task was, what the check found, what was done), written by the summary's AI engine (
[summary]) in the language of[notify] lang.zagon log plan --refreshbuilds them again when sessions worked after the last build; the service rebuilds the day at 23:55. A text set by hand (zagon log text set <row> "…") is never replaced;zagon log text rebuild <row> [--summary] [--shorten]asks the AI again for one row. - The day summary goes to Jira only when you ask:
zagon log commit --with-summaryputs it into the task's longest worklog,--summary-comment PROJ-1writes it as one comment on the issue, once per task and day. [worklog]settings, shown and set withzagon log config:tz(the zone worklog days are cut in, e.g. the client's),projects(Jira projects whose keys count besides the ones Jira lists),day_summary,rebuild_at_end. MCP:worklog_config(read-only).- Exclusions:
zagon log exclude add project|task|session …keeps that work out of the plan, out of "no task" and out of the reconciliation;log exclude rm | list. - Task keys are linked with more care: from what you typed, the title of a brief file your message points to, the git branch, a commit, the session title or a manual link; never from memory files, CLAUDE.md or files the agent read. A pasted worklog list (a paragraph or item with a clock range) gives no key, and once Jira's project list is known only keys of those projects (and
[worklog] projects) count. zagon log export --from … --to … --format csv|toggl: hours for invoices, the plan's rows and your worklogs in Jira, in the worklog time zone;togglis Toggl Track's CSV import format.- Mac, What to log: a strip says where the texts come from (the day summary, rebuilt at HH:MM, new sessions since) with Rebuild. Each row shows its text with a label (from the summary, edited by hand, from session titles). Open a row to edit, rebuild or shorten the text, see which sessions it comes from and why they count for the task, and choose "Day summary in this worklog" or "As a separate comment on the task". "Don't log" in a row's menu and on "No task" lines; excluded time is listed with "bring back". The worklog zone is shown above the plan.
- Mac, Settings → Jira and worklogs: the time zone, Jira projects, rebuild at 23:55 and on opening, a short text or the day summary, exclusions; written to this Mac and to the servers you tick. A Mac without a server rebuilds the day summary and the worklog texts at 23:55 in the worklog time zone, as a server's service does (up to one AI call a day, only when there was work on tasks).
zagon task list/ MCPtask_list: "worked 4h 32m in 7d" (was "worked 7d 4h 32m", read as seven days) and "1 session".
Cursor
- Cursor's own agent is counted as a third AI next to Claude Code and Codex: its sessions, live status (working / waiting / ended), project and model come from the hooks Zagon already installs in
~/.claude/settings.json(Cursor runs them through Settings → Agents → Third-Party Imports, on by default), with exact working time from then on. - Tokens: when Cursor's agent reports token counts in its
stophook (input, output, cache read, cache write), they are counted for its sessions and left out of the $ ($ ?in the CLI); the two reports of one answer (stop,afterAgentResponse) are not added up. No limits and no prices for Cursor: Cursor keeps plan usage and its prices on its servers, reachable only with your Cursor login token or browser cookie, and Zagon never reads credentials. - The days before the hooks: Cursor's earlier chats (
~/.cursor/projects/*/agent-transcripts, Cursor up to 2.x) place the requests that carry a time stamp in the day, and their task keys link the sessions to tasks; such a chat is titled by the first line of its first request. Cursor 3 keeps no chat transcripts, so its own list of conversations instate.vscdbis read instead (read-only: ids, times and titles, never the chats' text or Cursor's login), each conversation getting a rough turn of at most 10 minutes from its start. That time is approximate. - A Cursor conversation stops "waiting" 30 minutes after its last answer (Cursor rarely sends
sessionEnd). - Over Remote SSH, Cursor's hooks run on the server, so the Zagon there counts it and the Mac shows it from there; for Cursor windows on the Mac itself, Zagon has to run on the Mac.
- Mac: Cursor sessions say "Cursor" in the session list, the click copies
cursor <folder>(cursor --remote ssh-remote+<server> <folder>for a server's), and a day with Cursor time says it is approximate. No limit rings for Cursor.
Setup
zagon setup jira: connect Jira Cloud by answering questions (address, email, API token typed without echo); it is checked with Jira before anything is saved, and the token is kept in~/.zagon/jira-token(mode 0600).zagon notify setup [telegram|ntfy]: set up your own Telegram bot (the chat is found when you write /start to it) or an ntfy topic (a hard-to-guess one is offered), then a test message is sent.zagon install --enable-serviceas root on a server without a user systemd (no user bus) installs and enables the system unit by itself.zagon installand the Mac's Connect: with noclaudeon PATH, the MCP server is registered through the claude bundled in the Claude Code extension of VS Code, Cursor and other forks.- Codex runs a hook only after you trust it in
/hooks, and again after its command changes:zagon doctornow warns "codex: hooks not trusted yet: open /hooks in codex, press t" (or "changed since they were trusted"), andzagon installsays the same when it writes or finds untrusted hooks.
MCP
status: limits, sessions waiting for you and what is left to log today, in one call.summary: what was done over a week or a month, from the kept summaries (no AI call).day,weekandrangeshow the cost at API list prices;daygives the day's summary in full (it was cut at 600 characters).- Plan edits, each only with your confirmation and none written to Jira:
worklog_text(a row's text),worklog_skip(rows not to log),worklog_exclude(never log a project, task or session). worklog_refreshrebuilds the day's worklog texts (one AI call, saved in Zagon);worklog_planno longer calls the AI (itsrefresh: truestill works and does the same) and takesformat: json;worklog_committakeswith_summaryandsummary_comment.worklog_reconcileanswers in short text by default; an answer too long for Claude goes to a file under~/.zagon/exportsand the reply has its path and the totals per task.- Date arguments are
date,fromandtoeverywhere (sessionsandweekuseddayandstart; the old names still work).searchsays "1 session matches".
Service, doctor and updates
zagon doctorchecks that the service is running (system or user unit) and that the daemon logged a health line in the last 15 minutes; a stopped service is MISSING (exit 1). It also shows the notification channels and whether the last message got through, Codex hook events separately from Claude's (with a warning when a Codex session ran but its hooks sent nothing), compressed Codex rollouts, the Claude Code / Codex versions writing the logs against the tested ones (2.1.316 / 0.166), and how long the archive keeps copies. Newwarn/infolines never change the exit status.zagon updaterun by 0.1.5 or later (so not yet the update to 0.1.5): before replacing the binary it says when the new version moves the database to a newer schema, keeps a copy aszagon.db.v<N>(N: the schema it had) and prints how to roll back (zagon.prev+ that copy); with too little disk space it warns loudly instead; it refuses to install a version that cannot open the database.zagon doctorlists the copies kept.- Archive: when an organization sets
cleanupPeriodDaysin Claude Code's managed settings, the archive keeps Claude Code transcripts no longer than that (0: none) and removes older copies;zagon doctorsays which rule applies. - Day summaries: a billing / credit / extra-usage answer from the AI CLI makes the summary wi...
Zagon 0.1.4
Zagon 0.1.4
Your sessions reconciled with your Jira worklogs over a period, Claude limits from the Claude Code panel of VS Code, Cursor and other forks (experimental), and plans without a 5-hour limit shown right in the Mac app.
- Reconcile with Jira over a period: zagon log reconcile --from --to [--json | --md | --csv] puts the time of your sessions next to your Jira worklogs, per task and per day: matching, not logged, in Jira beyond the sessions, sessions with no task (shown by project and branch). It only reads Jira; nothing is written. Days before Zagon's history (the earliest Claude session it has) are listed apart and not compared. A day matches within [worklog] reconcile_tolerance_min minutes (15 by default). MCP: worklog_reconcile.
- Mac, What to log: Day | Period. A period is a quick range (today to last month) or your own dates: totals, work by day as a chart (in Jira, not logged, in Jira without sessions), the reconciliation by task or by day with filters, each task opened by day with its sessions and worklogs, Export… to Markdown or CSV and Copy Markdown. On a day, Log / Add writes that day's plan to Jira after a confirmation that shows the whole day's plan.
- Claude Code in VS Code, Cursor and other forks (Experimental): the extension panel never runs the status line, so its sessions brought no Claude limits. zagon install now puts a script at ~/.zagon/bin/claude-wrap and adds "claudeCode.claudeProcessWrapper" naming it to the settings of the editors it finds (user settings and profiles; on a Remote-SSH host, the machine settings there). The extension then starts its bundled Claude Code through the script; Zagon passes the panel's stream on unchanged and records the limit readings in it. Reload open editor windows (Developer: Reload Window). Checked with the extension's own Claude Code binary, not yet in every editor.
- The editor settings are edited with care: one line after the opening {, the rest of the file byte for byte, a copy settings.json.zagon-bak- next to it first. A file that names another wrapper, or is a symbolic link (shared dotfiles), is left alone and install says so. For an editor Zagon does not find, add the line yourself.
- With the setting, a new panel session starts in the default permission mode unless you pick one in the panel, and the panel's session list also shows claude -p sessions of other programs.
- zagon install --no-editor-panels leaves the editors alone; zagon editor-panels on | off adds or removes the setting later. Off is remembered in ~/.zagon/config.toml ([editor] panels = "off"), so a later install leaves the editors alone too. zagon uninstall takes the line out again. An update (zagon update, or the Mac app updating itself) does not touch the editors: run zagon editor-panels on, or Turn on in the Mac app.
- The script is safe to leave behind: without zagon, or with a zagon older than 0.1.4, it runs Claude Code directly. Uninstall keeps it that way; if an editor still names it, remove that setting before you delete ~/.zagon.
- zagon doctor says which editors have the setting and where, and when it points to a missing file, another wrapper or another zagon. This line never makes doctor fail.
- Mac, Settings: a card "Claude limits from the IDE panel" (Experimental) shows where it is on or off, with Turn on / Turn off. Connect also turns it on, and Disconnect turns it off.
- Mac: when Claude was used in the last 7 days but no Claude limit reading came in, or a window reset after Claude was last used and no new reading came, the Claude rings show a dash (next to Codex's rings when Codex has current readings) and the panel says where the limits come from: with editors found and the setting off, a Turn on in editors button; with it on, that the limits come after the panel's next message; with no editors, to run claude in a terminal or turn on claudeCode.useTerminal. The same hint is in the menu bar icon's tooltip and in VoiceOver.
- Mac: plans without a 5-hour limit, for Claude or Codex. When only the weekly limit comes in, the menu bar icon shows one week ring with the week's number (next to the other AI's rings when both are used), and the panel shows the week ring alone, with no 5-hour line and no "data will appear". The week warns as the 5-hour limit did: the number at 80 %, the ring at 95 %. The tooltip and VoiceOver say "week N % (no 5-hour limit)". A 5-hour reading that drops out for a moment after a reset or a long pause does not count: the week has to come alone for at least 10 minutes.
- README: Editors, What install changes and Undo describe the setting and the script; the worklog section has log reconcile.
Same database schema as 0.1.3 (v6): a 0.1.3 Mac and a 0.1.4 server, or the reverse, work together.
macOS: Zagon updates itself. Linux: zagon update, or curl -fsSL https://raw.githubusercontent.com/a1lezakty/zagon/main/install.sh | sh
Zagon 0.1.3
Zagon 0.1.3
A fix for the Mac app using a whole CPU core since 0.1.2, Claude Code from VS Code and Cursor read right, and Jira set up from the Mac.
- Mac: 0.1.2 kept redrawing the menu bar icon in a loop, and open windows with it, using about a whole CPU core all the time. The icon is now drawn only when what it shows changes: new readings, colours, monochrome, a dark or light menu bar.
- Claude Code in VS Code, Cursor and other editors: a message sent from the editor is read by what you typed, not by the context the editor adds to it (the open file, the selection, terminal and browser blocks), so task keys, day summaries and task suggestions no longer take words from that context. Summaries and suggestions read the transcripts again, so past days still on disk come out right too; task keys of messages read before 0.1.3 stay as they were.
- Hook calls from editors' own agents (Cursor, Trae, Devin, the VS Code agent with Claude hooks on), which also run the hooks in ~/.claude/settings.json, are ignored: their work no longer shows up as Claude Code sessions. Claude Code and Codex hooks work as before.
- The day summary and task suggestions fall back to the claude CLI that ships with the Claude Code extension of VS Code, Cursor or another fork (the newest one) when there is no other claude.
- zagon doctor also says when the Claude limits last came in (the editor extension never runs the status line), which claude the summaries use, and whether Jira is set up; these lines never make doctor fail.
- Mac: Settings > Jira: address (https only), email and API token, with Check (a real request to Jira, nothing saved), Save and Disconnect. The token goes to ~/.zagon/jira-token, readable only by you, and is not shown again. For each server the Mac reads, it shows whether Jira is connected there (a server sets it in its own config.toml).
- Mac, Tasks: a note when Jira is not connected (keys from branches and messages do not become tasks), with a link to connect it, and when there is no claude CLI (no new tasks are suggested). "Open in Jira" opens the issue when this Mac has Jira.
- README: a section on editors (in VS Code, Cursor and other forks the Claude limits come only from claude run in a terminal, or with claudeCode.useTerminal; the editors' own agents are not counted; JetBrains runs claude in its terminal, so everything works) and a section on Jira.
Same database schema as 0.1.2 (v6): a 0.1.2 Mac and a 0.1.3 server, or the reverse, work together.
macOS: Zagon updates itself. Linux: zagon update, or curl -fsSL https://raw.githubusercontent.com/a1lezakty/zagon/main/install.sh | sh
Zagon 0.1.2
Zagon 0.1.2
Claude Code and Codex limits side by side in the menu bar, with your own colours; plus fixes for 0.1.1.
- Menu bar: when both Claude Code and Codex have a current reading, one ring-in-ring icon each, Claude on the left (outer ring the week, inner ring 5 hours, the 5-hour number inside); with one of them, the pair of rings as before, in that tool's colours. The tooltip and VoiceOver name both. The numbers always sit inside the rings, on Retina and on 1x screens, and the icon no longer changes when focus moves to another monitor.
- The panel does the same: a ring-in-ring per tool with "5h until …" and "week N%", and how old each tool's reading is. When both spent today, the cost is split into Claude and Codex under the total.
- Settings > Menu bar: two ring colours per tool (5 hours and week) from the palette or any colour, with a live preview of one tool and of both, and a reset to the defaults (Codex has its own pair).
- Summaries for a week or a month can be cancelled while they are written; days already written are kept. Settings ask each server for its summary time once instead of opening several identical ssh connections.
- AI calls on servers work when the claude CLI runs as root with "bypassPermissions" as its default mode in ~/.claude/settings.json: the day summary, the evening task suggestions and handoff compression used to fall back to "without AI" there. When the AI does not answer, the log and the Mac say why ("The AI did not answer (): ").
zagon summary --jsonprints only JSON; log lines go to stderr. zagon updatesays whether it restarted the zagon service, or that the service is not running and how to start it.- The MCP server reports the zagon version it belongs to.
On servers where AI calls failed before, the day summary at 20:00 and the evening task suggestions now really call the AI (one cheap-model call each); README > Privacy says how to turn them off.
Same database schema as 0.1.1 (v6): a 0.1.1 Mac and a 0.1.2 server, or the reverse, work together; until the Mac is updated it does not show why the AI failed and may mark an earlier AI summary "without AI".
macOS: Zagon updates itself. Linux: zagon update, or curl -fsSL https://raw.githubusercontent.com/a1lezakty/zagon/main/install.sh | sh
Zagon 0.1.1
Zagon 0.1.1
The Mac app now behaves like an app, and the numbers it shows are more honest.
- App icon (sheep in a corral) and a menu bar icon of two coloured rings, 5 hours and week, with the numbers inside.
- Opening Zagon from Applications, Spotlight or the Dock shows its window; the Dock icon stays while the window is open. A click on a notification opens Sessions. Actions confirm themselves: connecting Claude Code and Codex, update checks, diagnostics, copying.
- Limits: inside one window the highest reading wins, so an idle session that repeats an old percentage no longer lowers the ring, and the share of the limit per task is no longer inflated. No readings yet shows "–", not 0%.
- Prices are per model; a model without a known price shows "$ ?" instead of $0, so some cost figures change.
- Day summary: an overview and cards per task or topic (what it was, what was done, what is left, time and cost), written on demand for any day, week, month or range, and sent from servers to the Mac. It says which machine it comes from and lists sessions of other machines below it; without the claude CLI it is written without AI. The daily summary time is a setting. On servers the summary service now finds the claude CLI, including nvm installs.
- Tasks are built from your work, with Jira as a reference;
zagon task listshows the last 7 days (--allfor the rest). Jira statuses such as "Ready to release" count as review. When no issue fits, Zagon suggests a new task in your own writing style and can create it in Jira after you confirm. - Projects are named after their repository; temporary folders are grouped as (temp). The Mac no longer looks inside folders that ask for permission (Desktop, Documents, cloud drives).
- Sessions driven by another session over tmux wait for that session, not for you.
zagon updateleaves no leftover files;zagon installwarns when systemd lingering is off.
More AI calls on servers: the day summary at 20:00 now runs even without a notification channel, and with a channel the evening task suggestions now ask the AI every evening, also to propose new tasks (one cheap-model call each). README > Privacy says what they send and how to turn them off.
The database moves to schema v6. A 0.1.0 Mac and a 0.1.1 server (or the reverse) still work together without the new features; a database cannot go back to 0.1.0.
macOS: Zagon updates itself. Linux: zagon update, or curl -fsSL https://raw.githubusercontent.com/a1lezakty/zagon/main/install.sh | sh
Zagon 0.1.0
Zagon 0.1.0
First public release of Zagon, a tracker for Claude Code and Codex CLI sessions.
- macOS menu bar app: 5-hour and weekly limits with a pace forecast, sessions working and waiting for you, day, week and calendar views, tasks and a worklog plan, notifications, servers over SSH, diagnostics. It updates itself (Sparkle, checked once a day, can be turned off).
- Linux CLI and background service with the same data, one-line install.sh and
zagon update. - Usage is counted by the folder of each request, "your time" counts only the messages you typed, and cache writes are priced as the API prices them.
- MCP server for Claude Code and Codex: reports, search, tasks and context handoff.
macOS: drag Zagon to Applications. The app is not notarized, so on the first launch open it via System Settings > Privacy & Security > Open Anyway.
Linux: curl -fsSL https://raw.githubusercontent.com/a1lezakty/zagon/main/install.sh | sh