jpmschweitzerandClaude Opus 4.7 2c8df9425b add AudioPen ingest pipeline and sync architecture setup docs
Voice-note capture as the primary mobile input channel. AudioPen
polishes on their cloud, POSTs to a self-hosted receiver on the
desktop (exposed via Tailscale Funnel so no router ports open and
nothing behind Authentik). The receiver writes to inbox/raw/; a bash
normaliser wraps each drop in frontmatter and moves it to inbox/;
/triage-inbox routes them from there.

scripts/audiopen-ingest.sh — 80-line bash normaliser. Idempotent;
safe to re-run. Extracts title, slugifies, computes capture timestamp
from mtime, rewrites with fleeting-note frontmatter.

scripts/audiopen-webhook/main.py — stdlib-only Python HTTP server.
Zero pip deps; binds to 127.0.0.1 by default. Accepts flexible
payload shapes (title/name + body/output/summary/polished/
orig_transcript) so AudioPen version drift is logged rather than
silently dropped.

scripts/audiopen-webhook/*.example — systemd user-unit templates for
the receiver and the path/service pair that fires the ingest wrapper
on inbox/raw/ changes.

scripts/pyproject.toml + README.md — Python venv convention. Zero
deps today; venv location reserved at scripts/.venv/ (gitignored),
manifest at scripts/pyproject.toml, bootstrap documented for both
plain pip and uv. Optional-dependencies groups let individual tools
pull what they need without bloating the whole env.

docs/setup/audiopen.md — full setup guide: generating the shared
secret, installing the systemd units, pairing with Tailscale Funnel,
configuring AudioPen's webhook, and the IMAP-fallback path for
setups that can't run a public-reachable receiver.

docs/setup/sync.md — companion guide: Gitea SSH remote (works even
with Authentik gating HTTPS), obsidian-git plugin configuration,
Syncthing desktop↔phone pairing with the critical .stignore patterns,
and the three phone-role tiers so the user can pick Tier 1 / 2 / 3
at their own pace.

.gitignore gains **/.venv/, **/venv/, **/__pycache__/, and *.pyc so
nobody accidentally commits a materialised environment.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 20:17:48 +02:00

Council

A Claude Code deliberation system with a persistent memory layer, browsable as an Obsidian vault.

You pose a question; a council of ten distinct personas (plus a Researcher and a Scribe) deliberates through a structured five-phase workflow, produces a voting table, and hands you the winning answer. Every session leaves a full transcript and persistent memory behind.

Quick start

Inside the repo in Claude Code:

/council <your question>

The Moderator (the main Claude Code session) will interview you briefly for context, then kick off the Council. You'll be asked follow-up questions along the way — to clarify the brief, resolve research gaps, or break vote ties. At the end you get a voting table and the full winning answer; everything is archived to sessions/<slug>/.

The Council

10 voting members, wild eclectic mix:

  • Elif Tavşan — retired stage magician & cold-reading coach
  • Dr. Wren Okafor — deep-sea marine biologist → systems ecologist
  • Magnus Holt — bankruptcy lawyer → insolvency-law lecturer
  • Sister Beatrix Vale — Benedictine nun → hospice counselor
  • Nikolai "Niko" Prochazka — Soviet cosmonaut trainer → wilderness survival instructor
  • Dr. Ingrid Vaasa — theoretical physicist (QFT) → independent researcher
  • Kai "Breaker" Lindholm — pro skateboarder → skatepark architect
  • Cassian Vire — investigative journalist → speculative-fiction novelist
  • Marcelo "Marco" Tintori — trained painter → 20 years as a corrections officer
  • Mari Koskela — marine engineer on cargo ships → anthropologist of maritime labor

Plus two non-voting roles:

  • Naima Quéré (Researcher) — the only sub-agent with web access.
  • Ansel Voss (Scribe) — transcribes proceedings and writes session files.

See council-members.base for the full roster as a table view in Obsidian.

Browsing sessions in Obsidian

Open this repo as an Obsidian vault. The two Bases at the root provide table views:

  • council-sessions.base — every session, sortable by date / winner / whether a tie happened.
  • council-members.base — the full roster with prior jobs and lenses.

Individual session files live at sessions/<slug>/:

  • brief.md — the Moderator's brief from the Phase-0 interview
  • research/*.md — the Researcher's per-topic notes
  • initial-answers.md, revised-answers.md, votes.md — phase transcripts
  • outcome.md — the canonical session file (winner, tally, full winning answer)

Deeper docs

  • CLAUDE.md — guidance for Claude Code when working inside this repo
  • docs/structure/initial-plan.md — the full design document
S
Description
No description provided
Readme
1.9 MiB
Languages
Python 50.6%
Shell 49.4%