Asagiri 朝霧

2026-05-16 · refactor/thin-orchestrator

Asagiri is a daily startup research engine.

Every morning it produces ten grounded startup ideas, each tied to live web signal, filed into the vault with a spaced-repetition review schedule. This page indexes the three surfaces of the system: the engine that synthesizes ideas, the webapp that browses them, and the widget that surfaces fragments mid-flow.

The three surfaces

engine

Engine

Thin orchestrator over four CLI agents (Claude, Codex, Gemini, Ollama), a local SearXNG instance for web context, and Jinja prompts stored as SKILL.md files. No vendor SDK lock-in.

Python · subprocess · Docker

webapp

Webapp

A Next.js dashboard for browsing the day's ideas. Kanban for triage, territory for clustering across domains, settings for purpose lenses and theme. Local-first.

Next.js · shadcn/ui · Tailwind

widget

Sasagani widget

A 7 KB drop-in fragment-capture widget. Lives at the edge of any page; collects half-formed thoughts and routes them back to the vault without interrupting flow.

TypeScript · Vite · standalone bundle

Design principles

  1. Decouple search from generation. The engine never asks an LLM to search the web. SearXNG returns snippets; the agent only synthesizes. Failure surfaces stay independent.
  2. CLI over SDK. Vendor SDKs lock you to one provider's release cycle. CLI agents are interchangeable through subprocess with quality tiers and automatic fallback.
  3. Prompts as files, not code. Every prompt lives in skills/<name>/SKILL.md. Editing the prompt is a vault change, not a code change.
  4. Local-first. SearXNG on loopback. Models reached through your subscription. The vault is the source of truth, not a cloud API.
  5. Calm interface. Near-monochrome with a single muted teal accent. The system reports; it does not perform. Ghost in the Shell, not Blade Runner.

On the name

朝霧 (asagiri, morning mist) — the moment before the day's shape is decided. Each idea is a possibility that has not yet condensed into commitment. Most will burn off by mid-morning. A few will stay.

Stack at a glance

Stack components by layer
Layer Tool Why
Search SearXNG (self-hosted) + optional Brave fallback Free, no quota, no API key on hot path
Generation claude-cli, codex-cli, gemini-cli, ollama Tiered chain; falls through on failure
Prompt Jinja-templated SKILL.md Edit prompt without touching engine code
Storage Obsidian vault (Markdown + JSON) Owns the data; spaced-repetition review built in
Browse Next.js webapp + Sasagani widget Dashboard for review, widget for capture