Agentic OS
unlistedby jay
A command center pane with token burn, project metrics, and a research feed.
Agentic OS
An Obsidian plugin that renders a "command center" dashboard in the main editor area — token burn, project metrics, and a research feed — ported from a hand-built HTML/CSS design into the Obsidian view API.
The dashboard is a tabbed view (Overview · Projects · Research) plus full-screen
"deep dive" views you can navigate into and back out of, all scoped under a single
.agentic-os root so nothing leaks into the host theme. The markup itself is static
(a port of a hand-built design), but live data is painted over it at runtime —
token usage, GitHub stats, your latest Claude Code session, and today's schedule and
tasks. Per-panel design notes live in docs/.
Features
- Main-area view (
agentic-os-view) with three tabs — Overview, Projects, Research — with live data painted over the static design:- Claude Status — the Token Burn live label reads Anthropic's official Statuspage JSON endpoint and switches between Live, Degraded, Offline, or Unknown.
- Token Burn — your real Claude Code rate-limit usage from the local usage snapshot (percentage + reset countdown + an estimated token figure), live-repainted as the snapshot updates.
- GitHub — Overview stat cards (repos, followers, stars, contributions) and a
Projects tab (contribution chart, streaks, velocity, language mix, releases,
activity heatmap), read via the
ghCLI. - Latest Session — your most recent finished Claude Code session, with a "Full ↗" history of that folder's sessions (sortable, searchable).
- Schedule + Daily Tasks — today's plan from your daily-note frontmatter, with tick-to-toggle task write-back.
- Quick Action buttons that run Obsidian commands (e.g. Shell Commands) you map to them in settings.
- "Full ↗" navigation into the Sessions, Release Radar, Hacker News, and Morning Brief views, with a back button that returns you to where you were.
- Ribbon icon and command (Open Agentic OS) that reveal the pane, or focus the existing one instead of opening a duplicate.
- Custom waveform icon matching the dashboard's brand mark.
- Setting to open the pane automatically on startup (off by default).
Live data
The panels read from local sources on your machine plus Claude's official Statuspage JSON endpoint — there's no server, and the plugin stores no history of its own (every figure is recomputed from the source each refresh):
- Claude Status ←
https://status.claude.com/api/v2/status.json. - Token Burn ←
~/.claude/usage-snapshot.json(mirrored there by your Claude Code statusline script). - GitHub ← the
ghCLI, reusing your existinggh auth(no token to store). - Latest Session ← your Claude Code transcripts under
~/.claude/projects/. - Schedule + Daily Tasks ← today's daily-note frontmatter (written by a
plan-todaycommand; ticked tasks write back).
Because these use Node fs/child_process, the plugin is desktop-only. Each panel
degrades gracefully — a missing source shows an empty state, never a crash. Configure
the GitHub username, rate-limit window, session-folder merging, and Quick Action command
mappings in the plugin's settings. See docs/ for the per-panel PRDs.
Install (manual)
Until this is in the community plugin browser, install it by hand:
- Build the plugin (see below), or grab
main.js,manifest.json, andstyles.cssfrom a release. - Copy
main.js,manifest.json,styles.css, and thefonts/folder into<vault>/.obsidian/plugins/agentic-os/. - Download the fonts (see
fonts/README.md) — optional; the pane falls back to the host sans-serif/monospace fonts if they're absent. - Enable Agentic OS under Settings → Community plugins.
Development
Requires pnpm. Install dependencies (esbuild's native binary build
is pre-approved in pnpm-workspace.yaml):
pnpm install
Create a .env (gitignored) to control where builds and the markup generator point:
# Build output goes straight into your vault's plugin folder, and the static
# files (manifest.json, styles.css, fonts/) are synced alongside main.js.
OBSIDIAN_PLUGIN_DIR=/path/to/your-vault/.obsidian/plugins/agentic-os
# Source HTML the markup generator reads (kept outside this repo).
AGENTIC_OS_SRC_DIR=/path/to/design-source
If OBSIDIAN_PLUGIN_DIR is unset, main.js is emitted into the repo root instead.
pnpm dev # esbuild watch — rebuilds on save (no typecheck)
pnpm run build # typecheck (tsc -noEmit) + production bundle
Pair pnpm dev with the Hot Reload plugin for
a save → reload loop. There are no tests or linter; pnpm run build is the
correctness gate.
Regenerating the markup
markup.ts is generated, not hand-written. Each export is the .dash element
extracted from one of the source HTML files in AGENTIC_OS_SRC_DIR. To change the
dashboard's content or structure, edit that source HTML and regenerate:
pnpm gen-markup
The generator also injects the data-full attributes the view uses to wire "Full ↗"
navigation, and fails loudly if the expected markup isn't found.
Project layout
| Path | Role |
|---|---|
main.ts | The plugin: view, view-state navigation, painting, ribbon/command, settings. |
claudeStatus.ts | Token Burn Claude Status label data, via the official Statuspage JSON API. |
usage.ts | Token Burn data — the Claude Code usage snapshot + cap calibration. |
github.ts | GitHub data — Overview stat cards and the Projects tab, via the gh CLI. |
session.ts | Latest Session + sessions-history data, from Claude Code transcripts. |
dayplan.ts | Schedule + Daily Tasks data, from today's daily-note frontmatter. |
markup.ts | Generated dashboard markup (do not edit by hand). |
scripts/gen-markup.mjs | Regenerates markup.ts from the source HTML. |
styles.css | Scoped dashboard stylesheet (fonts are injected at runtime in code, not here). |
esbuild.config.mjs | Bundler; syncs output into the vault when OBSIDIAN_PLUGIN_DIR is set. |
See CLAUDE.md for deeper architecture notes.
License
MIT
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.