Randall Morgan35 downloadsVisualize your vault as a 3D city, launch AI coding agents with full context, and track Git activity live.
Turn the projects in your Obsidian vault into a live 3D city — then run your AI coding agents from it and watch them work.
Each project note becomes a building. Status maps to color, priority to height, category to district, and vault backlinks to glowing Neural Link arcs. A central Neural Core pulses as you work, Data Arteries flow to buildings when files change, and every active agent (Claude Code, GPT Codex, Antigravity CLI) orbits its building as a colored orb.

Install from Settings → Community plugins → Browse → "Hypernovum", then enable it and run Open code city from the command palette (or click the cube in the ribbon).
Desktop only — the agent half of the plugin talks to your local git and terminal.
Until you tag anything, Hypernovum shows your whole vault — folders become districts, notes become buildings, and height is how many notes link in. That is a preview, not the product: tag one note and the city switches to project mode, where colour, height and windows start reporting real state. Add this frontmatter to a note:
---
tags: [project]
title: My Project
status: active # active · blocked · paused · complete → building color
priority: high # low · medium · high · critical → building height
category: web-apps # any string → district
projectDir: C:\Users\me\projects\my-project # unlocks Git signals + agent launch
---
The city rebuilds as you save. projectDir is the field that matters most: without it a
project has no Git activity, no dependency edges, and no Launch agent action. See
SCHEMA.md for every field.

Hypernovum is desktop-only because the agent-ops half of it talks to your local tools. Here is exactly what that means — nothing below happens silently, and you choose on first run whether the agent layer is active at all.
Hypernovum makes no network requests. No telemetry, no analytics, no remote calls of any kind. Everything it reads or writes is on your own machine.
| What | When | Why |
|---|---|---|
Runs read-only git commands (branch, log, status, rev-list) |
On city build, in folders you link with projectDir |
The Git activity layer: commit velocity, branch, dirty tree, merge conflicts. Turn off with Settings → Git activity layer |
Runs where / which (no shell) |
When the city view opens | Detects whether claude / codex / agy are installed, to grey out agents you don't have. Skipped entirely in vault mode |
| Opens a terminal and runs your chosen agent CLI | Only when you click Launch agent | The point of the agent launcher |
| Opens your file manager | Only when you click Open folder | — |
| Reads files outside the vault | Project folders you link (package.json, .git) |
Dependency detection and the Git activity layer |
| Writes files outside the vault | .hypernovum/SETUP.md + .hypernovum/.gitignore in a project folder, only when you launch an agent there |
Hands the agent its project context |
| Writes inside the vault | AGENTS.md, .hypernovum/heartbeat.js, briefings, snapshots — each on an explicit action |
— |
| Reads the clipboard | Never. Only writes, when you click a copy button | — |
Vault mode (Settings, or the command palette) turns the entire agent layer off: no process execution, no reads outside the vault. The city, lenses, filters, and backlink graph all still work.
AGENTS.md at the vault root: project schema, live inventory, quest board, skills roster, and heartbeat protocol, so any CLI agent instantly understands your second brainquestions: list in project frontmatter renders as a floating gold quest marker over the building, shows in the inspector and tooltip, and is published to agents via AGENTS.md — resolving a quest (move it to answered:) fires an emerald shockwave at the buildingSKILL.md files under <vault>/.claude/skills/) are published to agents in AGENTS.md, so a launched agent knows what it already has


.hypernovum/agents/ (per-session snapshots) for real-time agent status.hypernovum/SETUP.md with project metadata, Git signals, and memory context pointers before launch.hypernovum/heartbeat.js by the Install agent heartbeat hooks command, which also prints ready-to-paste hook JSON with every path already resolved.hypernovum/MEMORY_CONTEXT.md
| Platform | Terminal emulators | Notes |
|---|---|---|
| Windows | Windows Terminal, cmd.exe | Tries wt first, falls back to cmd |
| macOS | iTerm2, Terminal.app | Tries iTerm2 first (if running), falls back to Terminal.app |
| Linux | gnome-terminal, konsole, xfce4-terminal, xterm | Tries each in order until one succeeds |
All features — Neural Core, Data Arteries, agent integration, context menus — work identically on every platform. The only difference is which terminal emulator opens.
Projects are detected by frontmatter tag project or field type: project (the tag is
configurable in settings). Beyond the quick-start fields, the ones worth knowing:
---
tags: [project]
stack: [TypeScript, React, Vite] # shown on hover, drives the tech-stack lens
tasks: 24 # window grid density
tasks_done: 15 # lit windows
questions: # research quests — gold gems above the building
- "Which vector DB fits this workload?"
depends_on: [Mesh Gateway] # teal dependency arcs
blocked_by: [Relay Grid] # red-amber arcs + a "Blocked by" warning
projectDir: C:\Users\me\projects\my-project # Windows
# projectDir: /Users/me/projects/my-project # macOS
# projectDir: /home/me/projects/my-project # Linux
---
See SCHEMA.md for the full field reference.
Hypernovum has no built-in AI. External AI tools (Claude Code, etc.) read SCHEMA.md to learn the frontmatter format, scan your project directories, and write frontmatter to vault notes. Hypernovum renders the result.
Prepare vault for AI agents (command palette, settings, or the agents panel) writes an AGENTS.md at the vault root containing the frontmatter schema, a live inventory of your projects, and instructions for making agent activity visible in the city — so any CLI agent launched in the vault immediately understands your second brain. Safe to re-run: only the marked Hypernovum section is regenerated; the rest of an existing AGENTS.md is preserved.
Run the command palette action "Install agent heartbeat hooks". It installs the
heartbeat script into your vault at .hypernovum/heartbeat.js and shows you two
things with every path already filled in for your machine: a one-line command to
test with, and the JSON to merge into ~/.claude/settings.json. (Hypernovum shows
that JSON for you to copy — it never edits your global agent config itself.)
Once wired up, each agent session appears as its own orb. From a hook, use --hook
— the script then reads session_id, tool_name, and cwd from the hook's stdin
JSON, which is the only place Claude Code provides them (there is no
$CLAUDE_SESSION_ID environment variable):
# from a Claude Code hook — nothing to interpolate
node "<vault>/.hypernovum/heartbeat.js" --vault="<vault>" --hook \
--name="Claude Code" --agent-type=claude
# by hand or from your own wrapper: reuse one --id for the whole session
node "<vault>/.hypernovum/heartbeat.js" --vault="<vault>" --id="my-session" \
--name="Claude Code" --agent-type=claude --project="my-project" \
--state=editing --tool=Edit --file=src/x.ts
# on finish
node "<vault>/.hypernovum/heartbeat.js" --vault="<vault>" --id="my-session" --stop
Heartbeat v2 gives every session its own snapshot file
(.hypernovum/agents/<sessionId>.json), so any number of agents run concurrently
without clobbering each other. The orb is colored by --state (working / waiting /
blocked / complete / stale), carries an identity tooltip, and — when two sessions
send overlapping --file values on one project — surfaces a deterministic conflict
in the city. Any agent or wrapper that can run a command can ping it; Claude Code
hooks are just the most convenient path.
The script's source of truth is
scripts/heartbeat.jsin this repository; the plugin carries an embedded copy and writes it into your vault, so an installed plugin never depends on having the repo checked out.
npm install
npm run dev # watch mode (also regenerates the embedded heartbeat source)
npm run build # production build
npm run typecheck # tsc across core + plugin (esbuild does NOT typecheck)
npm test # vitest
Releases are cut from the root manifest.json — bump version there, then run
node scripts/check-versions.mjs --fix to mirror it into the plugin manifest, both
package.json files, and versions.json. Tag with the bare version (0.4.0, no
v prefix) and CI builds and attaches the release assets.
Built with Three.js, Zustand, and the Obsidian Plugin API.
This plugin stays free and open source. Hypernovum Pro is the standalone desktop app — the same city, rendered with realistic building models and image-based lighting, scanning your whole drive instead of one vault, plus Engram persistent agent memory, agent management, an MCP server, and the Tandem Terminal.


AGPL-3.0 — Free to use, modify, and distribute. Any modified version that is deployed must also be open-sourced under AGPL-3.0.