Files
council/reading/audiopen-integration-research.md
jpmschweitzerandClaude Opus 4.7 79be7a9aae seed example content so Bases render non-empty on first open
Five files across four note types so every new Obsidian Base has
something to display immediately when the vault is opened:

- daily/2026-04-19.md — today's journal entry, covering the PKB
  setup work. Wikilinks to the permanent note, project brief, and
  reading note below.
- notes/pkb-as-lens-substrate.md — the load-bearing design note
  capturing the PKB-as-substrate / Council-as-lens inversion that
  drove this whole extension.
- projects/mql/brief.md and log.md — active project tracking the
  companion Markdown-Query-Language CLI (sibling repo). First log
  entry records the Go-over-Rust decision and v0.1 scope.
- reading/audiopen-integration-research.md — marked done; captures
  the two-clouds distinction (AudioPen's processing cloud
  unavoidable; Obsidian Sync optional) and names Tailscale Funnel
  as the chosen webhook-exposure path.
- inbox/2026-04-19-1900_test-ingestion.md — hand-authored fleeting
  note (source: manual, distinguishable from AudioPen drops) so
  /triage-inbox has something to exercise on before the real voice
  pipeline is running.

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

38 lines
2.4 KiB
Markdown

---
type: reading
title: "AudioPen integration paths — self-hosted research"
author: "various"
source: "web (conversation notes during PKB planning, 2026-04-19)"
status: done
started: 2026-04-19
finished: 2026-04-19
tags: [audiopen, self-hosting, pkb, tailscale]
---
# AudioPen integration paths — self-hosted research
## Summary
AudioPen ships several output integrations: email, webhooks, direct-to-Obsidian (which routes through Obsidian's sync cloud), clipboard, and a few third-party automation platforms. The "direct to Obsidian" path is the one an earlier investigation surfaced, and it implicitly sends content through Obsidian Sync. For a self-hosted setup, that path is the wrong choice.
The cleaner architecture routes AudioPen's polished prose into user-controlled infrastructure via either a webhook (to a self-hosted receiver exposed via Tailscale Funnel) or email with IMAP pull on the desktop. Both fully avoid Obsidian's sync cloud.
The distinction worth holding: AudioPen's *processing* cloud (audio → polished prose) is unavoidable with AudioPen. The *storage/sync* cloud (Obsidian's paid service) is optional. This document is about the second.
## Highlights
- **Tailscale Funnel is the right tool for the webhook path.** Outbound-initiated; `*.ts.net` endpoint; no router ports opened; bypasses Authentik (which is gating Gitea's HTTPS in this setup).
- **Email+IMAP is the no-open-ports fallback.** Works if running a public-reachable receiver isn't feasible. Fully outbound.
- **Raw → normalised is a two-step pipeline.** AudioPen produces bare prose; a small bash wrapper wraps it in frontmatter and moves it from `inbox/raw/` to `inbox/`. Keeps the receiver stupid; all schema decisions live in one shell script.
## My notes
- AudioPen's payload shape varies slightly across versions. The receiver accepts multiple possible body keys (`body`, `output`, `summary`, `polished`) to avoid fragility; the raw payload is logged to stderr so you can inspect drift.
- If AudioPen's pricing or terms ever change, the documented escape hatch is whisper.cpp + a local polishing LLM + a phone-side Tasker/Shortcut. Out of scope for v1 but noted.
## Connections
- [[projects/mql/brief|mql CLI]] — separate but related self-hosted tooling push
- [[notes/pkb-as-lens-substrate|PKB as substrate]] — the overall architecture frame
- [[daily/2026-04-19|today's daily note]] — where the decision to go webhook-via-Funnel was made