Aether.
A local-first knowledge graph PWA — Obsidian alternative with daily Pulse reports refined by the same council pattern as Shellwire.
The problem on file
Obsidian is a local-first markdown notebook with a graph view bolted on. It is great as an editor and weak as a system. The graph does not feed anything else. The notebook does not know what happened yesterday. Cross-vault queries are manual.
The reasoning layer that would summarise a week of notes, surface emerging themes, or answer a question that spans projects is missing entirely, and adding it would cost a paid LLM subscription per device.
Aether is the rebuild. Same local-first markdown-on-disk substrate (the vault is a Syncthing folder that any editor can open).
A NestJS API watches the directory, indexes every save into Postgres with pgvector embeddings and a bidirectional link table, and a Next.js PWA renders the graph, the day-by-day Pulse reports, and a presentation mode called Show. The council from Shellwire is embedded in the api so the LLM bill stays at zero.
What it is, in numbers

The marquee piece, the Pulse loop
Every evening at 20:00 Africa/Nairobi a cron fires the Pulse worker. It walks the notes the watcher has indexed since the last Pulse, runs a council pass (synthesize-best, councilSize 3 from the shellwire-derived provider matrix).
It then writes a new markdown file with aether: pulse in the frontmatter, which the watcher re-indexes but the aggregator excludes from tomorrow's input, so the loop is bounded.
@Cron('0 20 * * *', { timeZone: 'Africa/Nairobi' })
async runDailyPulse() {
const notes = await this.notes.indexedSince(this.lastPulseAt());
if (notes.length === 0) return;
const result = await this.council.orchestrate({
task: 'pulse-synthesis',
tier: 'complex',
strategy: 'synthesize-best',
councilSize: 3,
prompt: this.buildPulsePrompt(notes),
});
await this.vault.writePulseNote({
body: result.response,
frontmatter: { aether: 'pulse', day: today() },
});
this.bus.emit('pulse:complete', { noteId, latencyMs: result.totalLatencyMs });
}The aesthetic of those Pulse files is the point. They are not chat transcripts. They are short editorial-pass essays in the same Fraunces-italic voice the rest of the interface uses, written in the user's own vault, version-controlled with the rest of the markdown.
The hidden ninety percent
In production
- 01Live at https://aether.alkenacode.dev with the PWA installable from any modern browser. Service worker is active and the offline read/write path is verified end-to-end.
- 0246 council providers attached, refreshed daily, sharing the Shellwire health-check infrastructure. Monthly LLM bill: zero.
- 03Pulse cron runs at 20:00 Africa/Nairobi, writes a markdown file the watcher then re-indexes. The aggregator self-excludes pulse notes so the loop is bounded.
- 04Cross-vault context resolves at render through the palace sidecar. Mempalace memory from any prior project surfaces inline in current notes via the palace:[query] shortcode.
- 05The Vellum & Stars surface (Fraunces italic + ember amber on deep ink) is a deliberate non-Obsidian aesthetic — Aether is not a tool you alt-tab to; it is a publication you live in.
If a knowledge tool can not summarise itself, it is doing half the job.
Shellwire
An autonomous newsroom run by twelve LLM providers voting against each other.