Skip to content
CLEPSOdocs

Clepso docs · build 6d2bebc · 59/75 increments done

CLEPSO

Your coding-agent limits, //before you hit them.

A macOS menu bar app that shows how much of your Claude Code and Codex limits you have used, when they reset and how fast you are going, from what those agents report on your own Mac. These pages document how it is built, what every number means and where the work stands.

Download v0.1.0-alpha.1 macOS 14+ · Apple silicon · signed and notarized · free and open source
01 · Menu bar monitor for macOSScroll ↓
01 / AT A GLANCE

The build, in numbers

Counted from the roadmap, the git history, the test suite and the CI script each time this site is generated.

Increments done
59/75
189Commits, each through every gate
473Swift tests
15Quality gates per commit
0Prompts, replies or paths ever uploaded
Increments by milestone
M0
M1
1.7
1.8
1.10
M2–M4
02 / STATUS

Every increment

One bar per increment, like a status page: green is done, amber is in progress, outlined is waiting on a go.

59 of 75 increments done · 79%
DoneIn progressWaitingNot started
M0: Foundation
6 of 6 done
M1: macOS vertical slice
6 of 6 done
1.7 Details, Stats and redesign
7 of 7 done
1.8 UI refinement
8 of 8 done
1.10 Dashboard restructure
32 of 37 done
M2 to M4
Sequenced
03 / THE APP

What it looks like

The menu bar panel and the arena, from the running app with demo data. All screens →

Menu bar panel: both limits with state, reset and pace estimate, and the current session
Stats › Models arena: a ranked roster of models and the chosen model’s dossier with its level and tokens by kind
04 / TRY THE RULES

Drag it past 80%

The same rule the app runs to name a limit's state, next to its Swift source. Level and pace playgrounds are on Metrics.

Limit state, with hysteresis

Available

// Sources/UsageEngine/PoolReducer.swift
static func classify(_ used: Decimal, previous: LimitState, config: EngineConfig) -> LimitState {
    if used >= config.exhausted { return .exhausted }
    if used >= config.critical { return .approaching(.critical) }
    if previous == .approaching(.critical), used > config.critical - config.hysteresis { return .approaching(.critical) }
    if used >= config.warning { return .approaching(.warning) }
    if case .approaching = previous, used > config.warning - config.hysteresis { return .approaching(.warning) }
    return .available
05 / HOW IT READS

A reading's path

From Claude Code's status line to the menu bar, all on your Mac. The sixth layer runs only if you sign in.

  1. 01
    Claude Code · Status lineRuns your status line command on every refresh and hands it a JSON description of the session.
  2. 02
    Helper · statusline.sh · clepso-statuslinePasses the input to your own status line unchanged, keeps only allowlisted fields, sends them on.
  3. 03
    Ingest · Socket · IngestorLocal socket, peer checks and a rate limit; each frame becomes readings with source and freshness.
  4. 04
    Store · SQLite · UsageEngineOne transaction per frame: insert the reading, work out each limit's state, keep the history.
  5. 05
    Show · Menu bar · DashboardRenders snapshots it is handed and never computes a state itself.
  6. 06
    Sync · Optional, if you sign inUploads daily counts once an hour; the only module allowed to use the network.
06 / PATH OF PROGRESS

Step through the build

Every increment in order. The highlighted one is in progress now; pick any dot for what it does.

2.0

Accounts and web dashboard

ACCOUNTS_AND_SYNC.md: step 1 (schema, row-level security, delete) and step 2 (Mac sign-in by email link, hourly upload) done; step 3 web dashboard at /app (dd5bc6f) and upload on quit (0b5ff72) done; every web notice escaped (d9058a3); hosted project renamed "clepso" (same ref) with the founder's go 19 Oct; Apple/Google/GitHub need provider setup

Arrow keys move along the line.
07 / READ

The docs

Or press ⌘K anywhere to search.

08 / RECENT

Recent changes

Full changelog →

  • Merge fix/Merge fix/perf-flake: paired perf rounds; helper sends a frame however long it took to build6d2bebc
  • HelperHelper: send a frame however long it took to build415ff9e
  • make perfmake perf: paired rounds, honest frame-delivery checke64048c
  • ReleaseRelease: scripted Developer ID build up to notarisation, v0.1 feature gate, release notesfd3a0a7
  • SiteSite: rebuild at f66a9bf (decision sheet work)020af47
  • Merge exacMerge exact running-now from Claude Code's background list, Tasks footnote, approved names for Codex (decisions 8-10)f66a9bf