Planungs-Instrument für Gründer

IdeaClyst

Verwandelt grobe Ideen in baubare SaaS-Pläne — indem Claude und Codex am selben Council-Tisch sitzen.

Next.js 16 React 19 Local-first Port 5417 Keine DB · Kein Login

Schritt-für-Schritt-Anleitung

Der schnellste Weg von einem frischen Clone zu einem fertigen Planungspaket. Der Mock-Modus ist die Voreinstellung — du brauchst also keine CLIs, um alles durchzuspielen.

1

Abhängigkeiten installieren

Im Projekt-Wurzelverzeichnis:

npm install
2

Konfiguration anlegen

Kopiere die Beispiel-Env-Datei. Sie startet im Mock-Modus — keine CLIs nötig.

cp .env.example .env.local
3

Dev-Server starten

Dann http://localhost:5417 im Browser öffnen.

npm run dev
4

Idee-Session starten

Auf der Startseite auf „Start an Idea Session“ klicken — das öffnet das Ideen-Formular (/new).

5

Idee beschreiben

Gib einen Titel, beschreibe die Idee (mindestens ein Satz, 10+ Zeichen) und wähle ein Zielvalidate · plan · build · pitch · refine. Optional: Zielkunde, Constraints oder bevorzugter Stack. Dann absenden.

6

Dem Council beim Beraten zusehen

Du landest auf der Run-Seite, die alle 1,5 s pollt. Die fünf Schritte leuchten nacheinander auf — fertig, aktiv, ausstehend — und jedes Ergebnis erscheint, sobald es abgeschlossen ist.

7

Dein Paket lesen

Ist der Run fertig, füllen sich die Ergebnis-Tabs: Summary, MVP Backlog, Risks, Validation Tests, Next Prompts. Alle früheren Sessions liegen unter /runs.

8

(Optional) Auf echte CLIs umstellen

Für echte Modell-Ausgaben setzt du IDEACLYST_AGENT_MODE=cli in .env.local, stellst sicher, dass beide CLIs installiert und eingeloggt sind, startest den Server neu und legst eine neue Session an. Ein echter Council dauert ~5–7 min (fünf echte Modell-Aufrufe), im Mock-Modus dagegen sofort.

claude --version && codex login status
9

Die Dateien finden

Jeder Run wird unter .ideaclyst/runs/<runId>/ auf Platte gespeichert — als run.json plus Markdown-Artefakte, die du außerhalb der App lesen oder teilen kannst.

!

Achtung im Dev-Modus: Eine Datei mitten im Lauf zu editieren kann einen aktiven Council unterbrechen (der Orchestrator läuft in-process). Wenn das passiert: npm run dev neu starten und eine frische Session beginnen.

01Was es ist

IdeaClyst ist eine local-first Next.js-App, die eine grobe Produktidee in ein vollständiges Founder-Planungspaket verwandelt. Das geschieht nicht mit einem einzigen Prompt, sondern über einen strukturierten Council — eine fünfstufige Beratung zwischen zwei KI-Kommandozeilen-Tools, die gegensätzliche Rollen einnehmen und sich gegenseitig kritisieren, bevor sie zu einem Urteil kommen.

Stell es dir wie einen winzigen Vorstand vor: ein skeptischer SaaS-Gründer (Claude) und ein pragmatischer CTO (Codex) argumentieren deine Idee in Form. Die Ausgabe wird in Summary, MVP Backlog, Risks, Validation Tests und gebrauchsfertige Next Prompts aufgeteilt.

Die ganze App dreht sich um eine Idee: Zwei verschiedene Modelle, die gegensätzliche Rollen einnehmen und die Arbeit des anderen lesen, erzeugen einen schärferen Plan als jedes für sich. Alles andere — der Disk-Store, die Polling-UI, der Mode-Switch — existiert nur, um diese Beratung zu ermöglichen.

Neu: ein Web-Research-Schritt 0 (aus surfagent übernommen) durchsucht headless Markt/Wettbewerber und erdet jeden Council-Schritt mit echten Daten — plus ein Idea-Discovery-Modus (/discover), der Ideen vorschlägt, die du in einen Run überführen kannst. Discovery-Kandidaten bekommen jetzt vollständige Idea-Reports mit Scorecards, Offer Ladder, Proof-Signalen, Ausführungsplan, Founder Fit, Roast, Keyword-Quelle/Freshness, kopierbaren Exports, Claude/Codex-Handoff-Prompts, gespeicherter Library, Founder-Profile-Personalisierung, Trend Radar und einem Side-by-side-Vergleich. Research ist best-effort und modusabhängig (standardmäßig Mock/offline) — ein Run scheitert nie, wenn Chrome fehlt. Details in der README.

02Funktionen im Überblick

Kern

Dual-Agent-Council

Fünf abwechselnde Schritte zwischen Claude und Codex; jeder Agent liest vorherige Ergebnisse und kritisiert den anderen.

Demo-bereit

Mock-Modus als Default

Realistische, ideen-spezifische Ausgabe ganz ohne installierte CLIs. Eine Env-Variable umlegen für den Ernstfall.

Live

Progressive Ergebnisse

Jedes Schritt-Ergebnis erscheint im Moment seiner Fertigstellung — die Run-Seite pollt alle 1,5 s die Platte.

Dauerhaft

Die Platte ist die Wahrheit

Jeder Run wird als run.json + Markdown-Dateien persistiert. Ein Server-Neustart verliert nie ein Ergebnis.

Strukturiert

Tab-Paket

Der finale Plan wird automatisch in Summary, MVP Backlog, Risks, Validation Tests & Next Prompts aufgeteilt.

Sicher

Ohne Shell, sandboxed

CLIs starten mit Array-Args + stdin (keine Injection); Codex läuft read-only in einem Wegwerf-Temp-Verzeichnis.

Robust

Sauberes Scheitern

Eine fehlende oder fehlschlagende CLI markiert den Run als „failed“ mit klarer Meldung — abgeschlossene Schritte bleiben erhalten.

Portabel

Markdown-Artefakte

Jeder Run schreibt zusätzlich lesbare .md-Dateien, die du außerhalb der App lesen oder teilen kannst.

Keine Secrets

Keine Credentials

IdeaClyst fasst nie API-Schlüssel an — beide CLIs authentifizieren über ihre eigene lokale Session.

Recherche

Evidence Toolkit

Surfagent-Recherche schreibt RESEARCH_DOSSIER.json, einen Toolkit-Tab, einen Founder-Brief und eigenständige Markt-Artefakte.

Discovery

Vollständige Idea-Reports

Jeder Kandidat hat eine Report-Seite mit Business Fit, Offer Ladder, Why-now, Proof, Market Gap, Frameworks, Keywords, Founder Fit und Roast.

Entscheidung

Vergleichen und exportieren

Kandidaten-Reports können in /compare verglichen und als Markdown, JSON, One-Pager oder Claude/Codex-Implementierungs- und Review-Prompts kopiert werden.

Persönlich

Founder Profile

/profile speichert Skills, Kapazität, Risiko, Sales-Komfort, Kapital, Marktzugang und unfair Advantages lokal.

Library

My Stuff

Kandidaten und Reports lassen sich in /library speichern, lokal als JSON und Markdown unter .ideaclyst.

Trends

Market Signal Library

/trends, /insights und /monitors machen aus lokalen Discoveries Trend-Karten, Markt-Insights und wiederholbare Competitor-/Trend-Diffs.

Keywords

Quellenbewusste Intelligence

Keyword-Sektionen zeigen Quelle und Freshness und können optionale Snapshot-Daten über deterministische Offline-Schätzungen legen.

Navigation

Schlanke Produktbereiche

Der Header bleibt kompakt: Explore enthält Discover, Today und Trends; Workspace enthält Sessions, Library und Validation. Tiefere Tools sind kontextuell verlinkt.

Evidence

Quellen-Audit

/evidence indexiert Run-, Discovery- und Report-Quellen mit Confidence, Freshness, Claims und Warnungen.

Validation

Sprint-Workspaces

/validation, /validation/import, /validation/analytics und /interviews machen Reports, Pricing-Tests, eingefügte Ergebnisse und Personas zu einem Audit-Trail.

Build

PRD, Landing und Pakete

Kandidaten-Reports öffnen Funnel-, Landingpage-, Persona-, Advisor-, Versions-, Export- und Build-this-Idea-Workspaces, alle aus dem gespeicherten Report abgeleitet.

Operations

Entscheidungen und Memory

Report-Entscheidungen schreiben nach .ideaclyst/decisions, speisen kompaktes Council-Memory und halten promoted, parked, killed und validated nachvollziehbar.

Research

Source Lanes und Cache

/settings/research bearbeitet Source-Lane-Templates und zeigt den TTL-/größenbegrenzten Cache für Search, Recon und lesbare Page-Extraktion.

03Architektur

IdeaClyst hat vier Schichten, und die Design-Disziplin ist: Nur eine davon weiß, ob du im Mock- oder echten CLI-Modus bist.

Schicht 1 · UI

App-Router-Seiten

Startseite, Ideen-Formular (/new), Sessions-Liste (/runs) und eine Live-Run-Detailseite, die pollt. Reines Client-Rendering + fetch.

Schicht 2 · API

Route-Handler

/api/runs legt einen Run an und feuert den Council ab; /api/runs/[id] liefert einen Run fürs Polling; /api/runs/[id]/research reiht eine reine Research-Aktualisierung ein und antwortet sofort.

Schicht 3 · Orchestrator

Die 5-Schritte-Pipeline

orchestrator.ts steuert den Council und persistiert nach jedem Schritt, inklusive der strukturierten Research-Toolkit-Dateien aus Schritt 0.

Schicht 4 · Agents + Store

Die Mode-Naht & Platte

agents/ ist der einzige mode-bewusste Code; runs/store.ts liest & schreibt die Single Source of Truth auf Platte.

// der einzige Zweig, der den Modus kennt — agents/index.ts
export async function runAgent(agent, prompt, ctx) {
  if (agentMode() === "mock")
    return runMock(ctx.run, ctx.stepKey);   // ignoriert Prompt, nutzt strukturierten Run
  return agent === "claude"
    ? runClaude(prompt, runDir)            // echtes `claude` (ohne -p), im Run-Verzeichnis
    : runCodex(prompt);                    // echtes `codex exec`
}

04Der 5-Schritte-Council

Das ist das Herz der App. Die beiden Agenten wechseln sich ab, und das Entscheidende steht in der „Sieht“-Zeile jedes Schritts — jeder Agent liest bestimmte vorherige Ergebnisse, und genau das macht es zu einer Beratung statt zu fünf isolierten Prompts.

Surfagent — Web-Recherche Claude — skeptischer SaaS-Gründer Codex — pragmatischer CTO
0
Surfagent · Web-Recherche

Marktrecherche

Bevor der Council berät, durchsucht ein Headless-Chrome das Web nach Markt und Wettbewerbern der Idee und schreibt ein Recherche-Memo plus strukturiertes Toolkit, das jeden folgenden Schritt erdet. Best-effort: Fehlt Chrome oder ist eine Suche blockiert, fällt es auf Offline-Synthese zurück — der Run scheitert nie. Pro Run im Ideen-Formular abschaltbar und später als Hintergrund-Refresh ohne kompletten Council neu ausführbar.

Sieht: Idee-Brief + Live-Web
1
Claude · Produktstratege

Produktstrategie

Setzt die Idee unter Druck und formt sie zu einer glaubwürdigen Strategie: das Kernproblem & wer es am stärksten spürt, der schärfste Wedge, Zielkunde & Zahlungsbereitschaft, Differenzierung, Go-to-Market und die riskantesten Annahmen.

Sieht: Idee-Brief
2
Codex · Pragmatischer CTO

Technische Architektur

Entwirft eine schlanke, baubare MVP-Architektur: empfohlener Stack & warum, Datenmodell, Kern-Services, Drittanbieter-APIs, Build-Risiken und eine grobe Build-Reihenfolge. Markiert technisch naive Stellen in der Strategie.

Sieht: Idee-Brief + Strategie aus Schritt 1
3
Claude · Kritik

Kritisiert die Architektur

Wieder der skeptische Gründer — greift den Plan des CTO aus Produkt-/Shipping-Sicht an: Ist er für ein MVP überengineert? Bedient er den Wedge? Was wird gestrichen, um in Wochen statt Monaten zu liefern?

Sieht: Idee-Brief + Architektur aus Schritt 2
4
Codex · Kritik

Kritisiert die Strategie

Der CTO schießt zurück, aus Engineering-Realitätssicht: Welche Annahmen sind für ein MVP technisch teuer oder unrealistisch? Wo impliziert das Go-to-Market mehr Scope, als das Team schnell liefern kann?

Sieht: Idee-Brief + Strategie aus Schritt 1
5
Claude · Synthese

Finale Synthese

Führt alles zu einem entschiedenen Paket zusammen und löst Widersprüche mit einer klaren Empfehlung. Gibt exakte ##-Überschriften aus: Summary, MVP Backlog, Risks, Validation Tests, Next Prompts.

Sieht: Brief S1 S2 S3 S4

Der Kreuz-Austausch ist der Punkt. Codex baut auf Claudes Strategie auf (Schritt 2), dann kritisiert jeder die Domäne des anderen (Schritte 3 & 4), und Claude führt alle vier zu einem Urteil zusammen (Schritt 5). Nach jedem Schritt schreibt der Orchestrator run.json und eine Markdown-Datei neu, sodass die UI die Ergebnisse nacheinander enthüllt.

Idea Discovery

Der größte Teil von IdeaClyst bewertet eine Idee, die du mitbringst. Idea Discovery (die Route /discover) macht das Gegenteil — es findet Ideen für dich, geerdet in dem, womit Menschen im Web tatsächlich kämpfen. Das leere Blatt ist der schwerste Teil; Discovery ersetzt es durch echte Nachfrage-Signale.

1 · Profil

Wer baut?

Optional füllst du /profile einmal aus, damit Discovery Skills, Käuferzugang, Kapital, Zeit, Risiko und Sales-Komfort berücksichtigen kann.

2 · Briefing

Du rahmst die Suche

Ein Markt oder Bereich — „visionOS-Apps“, „KI für Steuerberater“ — plus dein Ziel und deine Build-Kapazität. Profil-Kontext wird in die Notizen übernommen und kann pro Scout angepasst werden.

3 · Scouten

Surfagent durchsucht das Web

Headless-Chrome durchsucht quellenspezifische Spuren — Hacker News, Reddit, Product Hunt, GitHub, kommerzielle Review-/Pricing-Seiten und allgemeines Web — nach Problemen, „I wish there was…“, Launches und Implementierungs-Ökosystemen.

4 · Marktanalyse

Zuerst eine ehrliche Landschaft

Claude schreibt eine quellenbasierte Analyse — ein Ein-Zeilen-Urteil, Nachfrage-Signale, Wettbewerb, wer wirklich zahlt, und ein realistischer Ausblick für dein Ziel. Bei schwierigem Markt führt sie mit den schlechten Nachrichten.

5 · Opportunity Map

Den Wedge-Bereich finden

Der Scout erzeugt eine Pain-/Wettbewerbs-Matrix, damit scharfe Wedges, validierte aber volle Märkte, explorative Ideen und wahrscheinliche Skips sichtbar werden.

6 · Ranking

Konkrete, vergleichbare Ideen

Dann 5–7 Kandidaten, nach Eignung sortiert, jeder mit Wedge, Zahler, Build-Aufwand, kommerzieller Stärke, Risiko, Fit, Signal + Quelle, Confidence-Score und Kill-Kriterien.

7 · Full Report

Prüfen vor dem Commit

Jeder Kandidat öffnet einen vollständigen Report: Opportunity-Scorecard, Business Fit, Offer Ladder, Why-now, Proof-Signale, Market Gap, Execution Plan, Framework Fit, Community-/Keyword-Intelligence, Founder Fit, Profil-Lens und Roast.

8 · Trend Radar

Signale wachsen lassen

/trends sammelt Marktbegriffe, Keyword-Wachstum, Communities, Quellen und Kandidatenlinks aus lokalen Discoveries.

9 · Speichern/Vergleich/Export

Schärfer entscheiden

Reports lassen sich in /library speichern, in /compare sortieren und als Markdown, JSON, One-Pager, Build-Prompt oder Review-only-Prompt kopieren.

10 · Promote

Ein Klick zum Council

„Promote to council“ macht aus einem Kandidaten einen normalen Run und gibt Thesis, Founder Fit, Core Offer und Roast-Urteil an den Council weiter.

Eine Kernfunktion. Wie die Recherche ist Discovery modusabhängig (deterministische Offline-Kandidaten im Mock; Live-Scouting + Synthese im CLI-Modus) und best-effort — es liefert immer Kandidaten, auch offline oder wenn eine Quelle blockiert ist.

Discoveries werden auf Platte unter .ideaclyst/discoveries/<id>/ gespeichert (discovery.json, MARKET_READ.md, OPPORTUNITY_MAP.md, CANDIDATES.md sowie Report-/Versions-Artefakte), und die Discovery-Seite pollt live, genau wie ein Run. Trend Radar schreibt nach .ideaclyst/trends; Insights, Monitors, Entscheidungen, Exporte, Source Lanes, Validation-Imports und Interviews schreiben jeweils in eigene lokale Ordner unter .ideaclyst/. Der Header bleibt schlank: Explore öffnet /discover, /today und /trends; Workspace öffnet Sessions, Library und Validation. Compare, Evidence, Decisions, Insights, Monitors, Interviews, Clusters und Research Settings sind kontextuell verlinkt.

Roadmap-Intelligenz

IdeaClyst kann die Roadmap eines Threlmark-Projekts (ein separater lokal-first Roadmap-Manager) lesen und daraus belegte Wachstums-Vorschläge machen. Über die Route /roadmap schlägt es neue Features, Spin-off-Produkte und Services vor — jeweils wie eine Roadmap-Karte bewertet und mit echten Web-Quellen belegt. Prüfen, dann die besten zurück in Threlmarks Inbox senden.

1 · Quelle

Auf Threlmark zeigen

Liest die Roadmap direkt von der Platte (~/.threlmark), read-only, oder über Threlmarks REST-API; konfigurierbar auf der neuen /settings-Seite, Umgebungsvariablen haben Vorrang.

2 · Gap-Map

Erst die Roadmap verstehen

Deterministische Abdeckungs-Analyse — welche Kategorien stark, welche dünn oder ganz fehlend, erledigt vs. offen — rahmt die Analyse, bevor ein Modell läuft.

3 · Drei Spuren

Features · Spin-offs · Services

Drei unabhängige Recherche-Spuren durchsuchen das Web: Lücken→Features, Adjazenz→Spin-offs, Productize→Services. Die Anzahl der Vorschläge pro Spur ist frei wählbar.

4 · Echte Belege

Immer echt, nie Mock

Live + strict. Jeder Vorschlag zitiert echte, tatsächlich abgerufene Quell-Links plus ein Why-now. Keine Quellen bedeutet kein Erfinden — nur ein klarer Hinweis.

5 · Prüfen

Score, Quellen, Auswahl

Die Review-Seite zeigt Impact/Evidence/Fit/Effort, berechnete Priorität, Why-now und Quell-Links pro Karte. Die besten auswählen.

6 · Zurücksenden

Round-trip in die Inbox

„An Threlmark senden" schreibt flache Suggestion-Dateien in den suggestions/-Ordner des Projekts; Threlmarks Inbox nimmt sie in die Roadmap auf. Ein anderes Zielprojekt ist wählbar (Cross-Promote).

Read-only außer einem Ordner. IdeaClyst schreibt ausschließlich in den suggestions/-Ordner eines Threlmark-Projekts — nie Items, Board oder Metadaten. Vorschläge tragen Provenance (Art, Why-now, Quellen), die unverändert durch Threlmarks Inbox round-trippt.

Analysen liegen unter .ideaclyst/roadmap/<id>/ und die Seite pollt live wie ein Run. Datenquelle und REST-Basis-URL werden unter /settings gesetzt; siehe die neuen Variablen in der Konfiguration. Roadmap-Intelligenz ist mode-gated wie die übrige Recherche — sie läuft live + strict und zeigt nur echte Daten.

05Ablauf einer Anfrage

Vom Moment des Absendens an — der genaue Pfad. Beachte: Der Server antwortet, bevor der Council fertig ist.

#PhaseWas passiert
1AbsendenDas /new-Formular schickt den Idee-Brief per POST an /api/runs.
2Validieren & anlegenTitel erforderlich, Idee ≥ 10 Zeichen, Ziel muss gültig sein. Ein queued-Run wird auf Platte geschrieben (run.json + IDEA.md).
3Fire & forgetDer Server ruft void startRun(id) ohne await und gibt sofort { runId } mit Status 201 zurück.
4WeiterleitenDer Client navigiert zu /runs/[runId].
5PollenDie Run-Seite holt GET /api/runs/[runId] alle 1,5 s und rendert neu, während sich Ergebnisse füllen.
6BeratenIm Hintergrund läuft der Orchestrator die Schritte 1→5 und schreibt run.json nach jedem neu.
7AbschlussSchritt 5 wird in Tabs aufgeteilt, der Status wird completed (oder failed), und das Polling stoppt.
// api/runs/route.ts — die Fire-and-forget-Übergabe
const run = await createRun(input);
void startRun(run.id);              // NICHT awaited — läuft im Hintergrund
return NextResponse.json({ runId: run.id }, { status: 201 });

06Mock- vs. CLI-Modus

Eine Umgebungsvariable, IDEACLYST_AGENT_MODE, wählt das Backend. Orchestrator und UI sind in beiden Modi identisch — nur agents/ verhält sich anders.

AspektMock (Default)CLI
Setzen mitIDEACLYST_AGENT_MODE=mockIDEACLYST_AGENT_MODE=cli
CLIs nötig?Nein — läuft sofort offlineJa — claude & codex installiert + eingeloggt
Gesteuert durchStrukturierten Run + Step-Key (Prompt ignoriert)Den generierten Prompt (Run/Step ignoriert)
AusgabeDeterministisches, ideen-spezifisches MarkdownEchte Modell-Ausgabe
WofürDemos, UI-Arbeit, Offline-DevEchte Planungspakete
!

Voraussetzungen für den CLI-Modus. Beide Binaries müssen auf dem PATH liegen und authentifiziert sein: claude --version und codex login status. IdeaClyst fasst nie Credentials an — es verlässt sich vollständig auf die lokale Session jeder CLI.

Rechne mit Minuten, nicht Sekunden. Ein vollständiger Council im CLI-Modus sind fünf echte Modell-Aufrufe — grob 50–80 s pro Schritt, ~5–7 min gesamt. Der Mock-Modus ist sofort fertig. Env-Variablen werden beim Server-Start gelesen, also starte den Dev-Server neu, nachdem du den Modus geändert hast. Und beachte: Ein Moduswechsel berechnet bestehende Runs nicht neu — lege eine frische Session an.

Wurde ein Run wirklich von den echten CLIs erzeugt? Öffne seine PRODUCT_STRATEGY.md — echte Ausgabe ist spezifisch zu deiner Idee und greift deinen bevorzugten Stack / deine Constraints auf, während Mock-Ausgabe eine feste Vorlage wiederverwendet (sie spleißt deinen Ideen-Text in generische Phrasen wie „…points at a workflow that is currently manual, fragmented, or simply tolerated“).

07Wie CLI-Aufrufe laufen

Im CLI-Modus startet jeder Council-Schritt einen echten Prozess. Beide Backends nutzen Array-Args + stdin (nie einen Shell-String), damit ein Prompt das Escaping nicht brechen oder Shell-Syntax einschleusen kann, und beide erzwingen einen Timeout pro Aufruf (Default 180 s).

Claude-Backend

Kein -p / --print. Wenn der stdout von claude kein TTY ist (hier eine Pipe), läuft die CLI non-interaktiv, gibt eine einzelne Antwort aus und beendet sich. IdeaClyst pipet also nur den Prompt auf stdin und liest stdout — kein Print-Flag nötig. --tools "" hält es bei einer reinen Text-Completion (keine agentischen Datei-Aktionen), und es läuft im eigenen Run-Verzeichnis der Idee (spawn-cwd):

// agents/claude.ts — läuft im Run-Verzeichnis
claude --tools ""                  // Prompt auf stdin, stdout gepiped (non-TTY)
       [--model <model>]            // optional IDEACLYST_CLAUDE_MODEL

Gibt getrimmtes stdout zurück. Ein fehlendes Binary (ENOENT), ein Exit ungleich null ohne Ausgabe oder leere Ausgabe werden jeweils mit einer klaren „zurück zum Mock-Modus“-Meldung abgelehnt.

Warum kein -p? Das saubere non-interaktive Verhalten der CLI wird durch einen Nicht-TTY-stdout ausgelöst, nicht allein durch das Print-Flag — daher liefert das Weglassen von -p (und des nur mit -p gültigen --output-format) weiterhin eine einmalige Completion. Jede Idee läuft in ihrem eigenen Verzeichnis, analog zur Isolation von Codex.

Codex-Backend

Führt Codex non-interaktiv, read-only, in einem Wegwerf-Temp-Verzeichnis aus, damit es dein Dateisystem nicht anfassen kann — wir wollen nur die Text-Completion:

// agents/codex.ts
codex exec --json --skip-git-repo-check --ephemeral \
  -s read-only --color never \
  -C <temp-dir> -o last-message.txt -    // Prompt auf stdin

Die saubere finale Nachricht wird aus der -o-Ausgabedatei gelesen; der --json-Event-Stream wird als Fallback geparst (und um einen sauberen API-Fehler sichtbar zu machen). Das Temp-Verzeichnis wird danach immer entfernt. Ein optionales IDEACLYST_CODEX_MODEL ergänzt -m <model>, sonst greift ~/.codex/config.toml.

08Datenmodell & Speicherung

IdeaClyst ist local-first: es gibt keine Datenbank und keinen In-Memory-State. Jeder Run ist ein Verzeichnis, und run.json ist die Single Source of Truth — der Orchestrator schreibt sie nach jedem Schritt neu, die Polling-API liest sie einfach zurück.

Layout auf Platte

.ideaclyst/ # IDEACLYST_DATA_DIR (Default) ├─ runs/ └─ <runId>/ # Slug mit Zeitstempel-Präfix ├─ run.json # ← Single Source of Truth ├─ IDEA.md # der Brief, menschenlesbar ├─ RESEARCH_FINDINGS.md # Schritt 0 (Web-Recherche) ├─ RESEARCH_DOSSIER.json # strukturierte Evidenz ├─ RESEARCH_TOOLKIT.md # alle Research-Werkzeuge ├─ COMPETITOR_MATRIX.md # Wettbewerber-Vergleich ├─ OPPORTUNITY_MAP.md # Opportunity-Zonen ├─ VALIDATION_EXPERIMENTS.md # Tests aus Quellen ├─ DISTRIBUTION_PLAN.md # frühe Kanäle ├─ IDEA_GRAVEYARD.md # Kill-Kriterien ├─ MVP_SCOPE_NEGOTIATION.md # Scope-Entscheidungen ├─ LANDING_PAGE_CRITIC.md # Landingpage-Kritik ├─ COMPETITOR_WATCH.md # lokale Watch-Basis ├─ FOUNDER_BRIEF.md # kompakter Founder-Brief ├─ PRODUCT_STRATEGY.md # Schritt 1 ├─ TECHNICAL_ARCHITECTURE.md # Schritt 2 ├─ CRITIQUES.md # Schritte 3 + 4 kombiniert ├─ FINAL_PLAN.md # Schritt 5 └─ TRANSCRIPT.md # laufendes Protokoll aller Austausche └─ discoveries/ └─ <discoveryId>/ ├─ discovery.json # Marktanalyse, Kandidaten, Reports ├─ MARKET_READ.md # Marktlandschaft ├─ OPPORTUNITY_MAP.md # Wedge-Zonen ├─ CANDIDATES.md # sortierte Ideen └─ CANDIDATE_REPORTS.md # vollständige Idea-Reports

Der Run-Datensatz

Ein Run trägt den Brief (Titel, Idee, Ziel, optional Zielkunde / Constraints / bevorzugter Stack), einen status von queued → running → completed | failed, ein menschenlesbares currentStep-Label für die UI und ein outputs-Objekt, das leer beginnt und sich füllt. Run-IDs haben ein Zeitstempel-Präfix, sodass ein umgekehrter String-Sort gratis „neueste zuerst“ liefert.

StatusBedeutung
queuedAngelegt, Council noch nicht gestartet.
runningCouncil läuft; currentStep zeigt, wo.
completedAlle 5 Schritte fertig; Tabs gefüllt.
failedEin Schritt schlug fehl; error hält die Meldung, vorherige Schritte bleiben erhalten.

Nachsichtiges Aufteilen der Abschnitte. Schritt 5 verlangt exakte ##-Überschriften, aber markdown.ts matcht sie groß-/kleinschreibungsunabhängig per Schlüsselwort (z.B. „mvp“ / „backlog“ / „scope“) und toleriert ###. Lässt sich ein Abschnitt nicht finden, landet der gesamte Plan im Summary-Tab — so bleibt ein Tab nie leer.

09API-Referenz

GET /api/runs

Listet alle Runs, neueste zuerst. Gibt { runs: Run[] } zurück.

POST /api/runs

Validiert den Brief, legt einen queued-Run an, feuert den Council im Hintergrund und gibt { runId } (201) zurück. Validierung: Titel erforderlich; Idee ≥ 10 Zeichen; Ziel ∈ validate · plan · build · pitch · refine.

// Request-Body
{
  "title": "...",            // erforderlich
  "idea": "...",             // erforderlich, 10+ Zeichen
  "goal": "validate",        // erforderlich, eins der fünf
  "targetCustomer": "...",   // optional
  "constraints": "...",      // optional
  "preferredStack": "..."    // optional
}
GET /api/runs/[runId]

Gibt einen einzelnen Run als { run: Run } zurück — genau das pollt die Detailseite alle 1,5 s.

Einen Run vom Terminal aus steuern

Die UI ist nur ein Client dieser API — alles, was du im Browser tun kannst, geht auch per Skript. Run anlegen, bis zum Abschluss pollen, dann das Paket von der Platte lesen:

# 1. Run anlegen → liefert { "runId": "..." }
curl -s -X POST http://localhost:5417/api/runs \
  -H 'Content-Type: application/json' \
  -d '{"title":"StandupScribe","idea":"Ein Slack-Bot, der einen täglichen Standup-Digest postet.","goal":"plan"}'

# 2. Status pollen, bis completed (alle paar Sekunden)
curl -s http://localhost:5417/api/runs/<runId> | jq '.run.status, .run.currentStep'

# 3. Das fertige Paket lesen
cat .ideaclyst/runs/<runId>/FINAL_PLAN.md

10Dateiübersicht

src/ ├─ app/ │ ├─ page.tsx # Startseite │ ├─ new/page.tsx # Ideen-Formular │ ├─ runs/page.tsx # Sessions-Liste │ ├─ runs/[runId]/page.tsx # Live-Run-Detail (pollt) │ └─ api/runs/ │ ├─ route.ts # GET Liste / POST anlegen + abfeuern │ └─ [runId]/route.ts # GET einen ├─ components/ # app-shell, idea-form, result-tabs,# run-card, status-pill, empty-state └─ lib/ ├─ agents/ # DIE Mode-Naht │ ├─ index.ts # runAgent()-Dispatch │ ├─ mock.ts # Offline-Ausgabe, ideen-spezifisch │ ├─ claude.ts # echtes `claude` (ohne -p), Run-Verzeichnis │ ├─ codex.ts # echtes `codex exec` │ └─ prompts.ts # die 5 Prompt-Builder ├─ runs/ │ ├─ types.ts # Run / RunOutputs Datenmodell │ ├─ store.ts # Lesen/Schreiben auf Platte │ └─ markdown.ts # Abschnitts-Splitter für finalen Plan ├─ orchestrator.ts # die 5-Schritte-Pipeline └─ utils.ts # Slug/runId + Markdown-Renderer

11Konfiguration

Die gesamte Konfiguration liegt in .env.local (Kopie von .env.example). Es sind keine Secrets erforderlich.

VariableDefaultZweck
IDEACLYST_AGENT_MODEmockmock oder cli
IDEACLYST_CLAUDE_BINclaudeClaude-CLI-Binary / Pfad
IDEACLYST_CLAUDE_MODELleerKonkretes Claude-Modell (z.B. opus), oder CLI-Default nutzen
IDEACLYST_CODEX_BINcodexCodex-CLI-Binary / Pfad
IDEACLYST_CODEX_MODELleerKonkretes Codex-Modell, oder ~/.codex/config.toml nutzen
IDEACLYST_AGENT_TIMEOUT_MS180000Timeout pro Agent-Aufruf
IDEACLYST_DATA_DIR.ideaclystWo Runs gespeichert werden

Recherche & Discovery

Alles best-effort; der Live-Pfad braucht eine Chrome/Chromium-Installation. Research folgt dem Agent-Modus, sofern nicht überschrieben.

VariableDefaultZweck
IDEACLYST_RESEARCH_MODEfolgt Agent-Modusmock- oder live-Override
IDEACLYST_RESEARCH_STRICTaus1 = zeigt nie Mock-/Offline-Inhalte; bei fehlenden Live-Daten eine klare Notiz (mit live kombinieren)
IDEACLYST_RESEARCH_ENGINEduckduckgoduckduckgo · bing · google
IDEACLYST_CHROME_BINauto-erkanntChrome/Chromium-Pfad-Override
IDEACLYST_RESEARCH_USER_AGENTDesktop-Chrome-UAUA-Override (vermeidet Headless-Bot-Challenges)
IDEACLYST_RESEARCH_CDP_PORT9222Headless-Chrome-Debug-Port
IDEACLYST_RESEARCH_TIMEOUT_MS20000Timeout pro Seiten-Recon
IDEACLYST_RESEARCH_BUDGET_MS60000Budget für den ganzen Research-/Scout-Schritt
IDEACLYST_RESEARCH_MAX_RESULTS6Suchergebnisse pro Query
IDEACLYST_RESEARCH_MAX_SOURCES3Tief reconnte Seiten
IDEACLYST_RESEARCH_IDLE_MS120000Idle-Headless-Chrome danach beenden

Roadmap-Intelligenz (Threlmark)

Woher IdeaClyst Threlmark-Projekte liest. Die /settings-Seite bearbeitet diese ebenfalls; Umgebungsvariablen haben Vorrang.

VariableDefaultZweck
IDEACLYST_ROADMAP_SOURCEEinstellungen / diskdisk oder rest
THRELMARK_DATA_DIR~/.threlmarkThrelmark-Datenwurzel (Disk-Quelle)
IDEACLYST_ROADMAP_DIR= THRELMARK_DATA_DIRExpliziter Pfad-Override
IDEACLYST_THRELMARK_APIkeineBasis-URL für die REST-Quelle, z. B. http://localhost:5418

12Ausführen

# Schnellstart — Mock-Modus, keine CLIs nötig
npm install
cp .env.example .env.local
npm run dev          # → http://localhost:5417

# dann: App öffnen → "Start an Idea Session" → absenden → beim Zusammenbauen zusehen
SkriptTut
npm run devDev-Server auf :5417 (Turbopack)
npm run buildProduktions-Build
npm run startProduktions-Build auf :5417 ausliefern
npm run lintESLint
npm run typechecktsc --noEmit

13Grenzen & Fehlerbehebung

!

Hot Reload unterbricht laufende Runs. Der Orchestrator läuft in-process. Im Dev-Modus kann das Editieren einer Datei mitten im Lauf einen aktiven Council abbrechen. Starte dev neu und beginne eine frische Session. Bereits auf Platte abgeschlossene Schritte bleiben erhalten.

!

„The council run failed“ im CLI-Modus. Fast immer eine CLI, die nicht installiert oder nicht eingeloggt ist. Prüfe claude --version und codex login status, oder setze IDEACLYST_AGENT_MODE=mock, um auf Mock-Ausgaben zurückzufallen.

!

v0-Umfang. Kein Login, kein Billing, keine Teams, keine Datenbank, kein Docker. Runs sind lokale Dateien. Das ist Absicht — IdeaClyst ist ein local-first Planungs-Instrument, kein gehostetes Produkt.