somaticbits/idea-engine

Explore unexpected connections on a visual idea map and turn them into buildable concepts with AI.

TypeScript

0

6 commits

updated Sep 28, 2026

See the code

README

Idea Engine

Follow the strange thread. Start with a word, wander through unexpected connections, and turn the best one into something you could build.

Idea Engine demo: start with a seed and turn an idea into a concept card

▶ Watch the 47-second teaser

How it works

  1. Start anywhere. Enter a seed and choose how far the ideas should wander: Near, Open, or Far. Add an optional kit of materials or tools you have on hand.
  2. Follow a branch. Explore associations on a visual map, retrace your path, and pick the next idea to develop. Jev filters generated suggestions before they appear.
  3. Keep what clicks. Pin an idea to make a concept card with its origin story, rough stack, smallest prototype, and a wildcard. Copy it as Markdown or a coding-agent prompt.

Trips and concepts are saved locally, so you can come back to a thread later.

The idea

This is a guided association tool, not a one-shot list of startup ideas. You choose the next node; the path you took becomes the raw material for a buildable concept. Near / Open / Far changes how surprising the suggestions can be, while an optional kit nudges them toward things you can actually make. A pin turns that specific path into a small prototype plan rather than inventing a new story from scratch.

Run it locally

You'll need Docker and your own OpenRouter API key.

git clone https://github.com/somaticbits/idea-engine.git
cd idea-engine
docker compose up --build

Open http://127.0.0.1:8080 and paste your key into the setup screen. The app checks that the key can access both chat and Jev. Your trips are stored in a local Docker volume; stop the app with Ctrl+C.

For local development instead, use Node 22 and run npm ci followed by npm run dev. Open http://127.0.0.1:5173.

Architecture

Svelte UI (branch map) → Node/Hono API → OpenRouter
                          │                ├─ Dreamer: proposes associations
                          │                ├─ Jev: scores and filters them
                          │                └─ Narrator: writes pinned concept cards
                          └─ SQLite: trips, nodes, routes, cards, usage

The server sends the seed, current path, and optional kit to the Dreamer. Jev scores the candidates for surprise, coherence, and safety (plus kit fit when relevant), and only accepted branches are saved. Pinning calls the Narrator with the actual association chain; cards can then be exported without another model call. The Svelte client talks only to the local API, which streams expansion progress and keeps the OpenRouter key server-side.

Before you explore

  • Model calls use your OpenRouter credits, including setup checks and retries. Set a spending limit on your key. The app also defaults to 200 expansions/day, 30 pins/day, and $2/hour in budgeted spend; its estimate is not your OpenRouter bill.
  • This is a single-user, loopback-only app with no login. Don't expose port 8080 to your network. Seeds, kit items, and graph context are sent to OpenRouter and its serving providers when generating ideas.
  • The browser doesn't call OpenRouter directly; the local server handles requests and stores your work. No analytics are included.

MIT license · Security

ai
brainstorming
creativity
idea-generation
openrouter
svelte

somaticbits/idea-engine

Explore unexpected connections on a visual idea map and turn them into buildable concepts with AI.

TypeScript

0

6 commits

updated Sep 28, 2026

See the code

README

Idea Engine

Follow the strange thread. Start with a word, wander through unexpected connections, and turn the best one into something you could build.

Idea Engine demo: start with a seed and turn an idea into a concept card

▶ Watch the 47-second teaser

How it works

  1. Start anywhere. Enter a seed and choose how far the ideas should wander: Near, Open, or Far. Add an optional kit of materials or tools you have on hand.
  2. Follow a branch. Explore associations on a visual map, retrace your path, and pick the next idea to develop. Jev filters generated suggestions before they appear.
  3. Keep what clicks. Pin an idea to make a concept card with its origin story, rough stack, smallest prototype, and a wildcard. Copy it as Markdown or a coding-agent prompt.

Trips and concepts are saved locally, so you can come back to a thread later.

The idea

This is a guided association tool, not a one-shot list of startup ideas. You choose the next node; the path you took becomes the raw material for a buildable concept. Near / Open / Far changes how surprising the suggestions can be, while an optional kit nudges them toward things you can actually make. A pin turns that specific path into a small prototype plan rather than inventing a new story from scratch.

Run it locally

You'll need Docker and your own OpenRouter API key.

git clone https://github.com/somaticbits/idea-engine.git
cd idea-engine
docker compose up --build

Open http://127.0.0.1:8080 and paste your key into the setup screen. The app checks that the key can access both chat and Jev. Your trips are stored in a local Docker volume; stop the app with Ctrl+C.

For local development instead, use Node 22 and run npm ci followed by npm run dev. Open http://127.0.0.1:5173.

Architecture

Svelte UI (branch map) → Node/Hono API → OpenRouter
                          │                ├─ Dreamer: proposes associations
                          │                ├─ Jev: scores and filters them
                          │                └─ Narrator: writes pinned concept cards
                          └─ SQLite: trips, nodes, routes, cards, usage

The server sends the seed, current path, and optional kit to the Dreamer. Jev scores the candidates for surprise, coherence, and safety (plus kit fit when relevant), and only accepted branches are saved. Pinning calls the Narrator with the actual association chain; cards can then be exported without another model call. The Svelte client talks only to the local API, which streams expansion progress and keeps the OpenRouter key server-side.

Before you explore

  • Model calls use your OpenRouter credits, including setup checks and retries. Set a spending limit on your key. The app also defaults to 200 expansions/day, 30 pins/day, and $2/hour in budgeted spend; its estimate is not your OpenRouter bill.
  • This is a single-user, loopback-only app with no login. Don't expose port 8080 to your network. Seeds, kit items, and graph context are sent to OpenRouter and its serving providers when generating ideas.
  • The browser doesn't call OpenRouter directly; the local server handles requests and stores your work. No analytics are included.

MIT license · Security

ai
brainstorming
creativity
idea-generation
openrouter
svelte

Languages

TypeScript

52.3%

Svelte

46.9%