f318555c82b37a66fcd2c8c744f19350f06acee9
Dreams are currently a black box — to benchmark Tier L models on dreamer
induction quality we need to see what each model produced. This adds a
workspace-scoped /dreams route that surfaces every dream run as a
group of conclusions split into explicit / deductive / inductive
columns, with click-to-expand premise trees.
What's here:
- `lib/dreams.ts`: pure helpers. `clusterConclusionsIntoDreams` groups a
raw conclusions list into per-pair bursts using a configurable time
window (default 60s). `expandPremiseTree` walks `reasoning_tree` first
and falls back to a flat `premises` ID list, with cycle detection and
a depth cap. Defines an `ExtendedConclusion` type that augments the
generated schema with `conclusion_type`, `premises`, and
`reasoning_tree` — Honcho's migration f1a2b3c4d5e6 added those
columns but `schema.d.ts` doesn't expose them yet, so the UI degrades
gracefully (unknown types fall into "explicit").
- `api/queries.ts`: new `useDreams` hook that paginates the conclusions
list endpoint up to a configurable cap (default 400) and hands the
raw list to the UI for clustering. New `dreams` query key.
- `components/dreams/`:
- `DreamList.tsx` — route entry. Shows recent dreams as rows with
timestamp, observer→observed pair, and per-type counts. Selecting
a row expands an inline detail panel above the list.
- `DreamDetail.tsx` — three-column view (explicit / deductive /
inductive). Each inductive conclusion has a "Show premises" button
that expands the reasoning chain.
- `PremiseTree.tsx` — recursive premise renderer with type badges,
cycle indicator, and graceful handling of premises that fall
outside the loaded page.
- Routing: `routes/workspaces_.$workspaceId_.dreams.tsx` registers the
page; routeTree.gen.ts regenerated.
- Sidebar: new "Dreams" entry between Conclusions and Webhooks
(MoonStar icon to distinguish from the dark-mode Moon).
- Breadcrumb: "dreams" added to SECTION_LABELS so the trail resolves.
Tests (vitest, 14 new):
- clustering: empty input; same-pair burst within window; gap exceeds
threshold → split; different pairs don't merge even with overlapping
timestamps; custom gap window; newest-first ordering; counts default
unknown types to explicit.
- premise tree: empty children for no premises; flat list → direct
children; multi-level reasoning_tree recursion; missing premise
flagged (not in loaded page); cycle detection halts recursion;
maxDepth cap; reasoning_tree preferred over flat premises.
Verified manually in the preview: route mounts, sidebar/breadcrumb
resolve, error path renders cleanly, typecheck + lint + dream tests
all clean. The unrelated `app.test.tsx` failure is pre-existing on
main.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Browse memories, peers, sessions, and conclusions — or chat with full memory context — directly against your own Honcho instance. All connection details stay in your browser; nothing leaves except requests to the URL you configure.
Features
| Dashboard | Workspace count and queue status, auto-refreshes every 10 s |
| Workspaces | Paginated list with per-workspace navigation |
| Peers | Browse peers, view representations, context, and peer cards |
| Sessions | Paginated message history with summaries and context |
| Conclusions | Semantic search across conclusions with observer/subject display |
| Webhooks | Manage and trigger webhooks per workspace |
| Chat | Conversational interface through Honcho's chat endpoint with memory context |
| Schedule Dream | Trigger Honcho's dream/consolidation pass on demand |
| Dark / light mode | Persisted per device, instant toggle |
| Optional auth | Token field is optional; connection health check auto-detects auth requirement |
Download
Pre-built binaries are attached to every GitHub Release:
| Platform | File |
|---|---|
| macOS (Apple Silicon) | OpenConcho_*_aarch64.dmg |
| macOS (Intel) | OpenConcho_*_x64.dmg |
| Linux | openconcho_*_amd64.deb / openconcho_*_amd64.AppImage |
| Windows | OpenConcho_*_x64-setup.exe / OpenConcho_*_x64_en-US.msi |
Quick Start
Prerequisites
Web app
git clone https://github.com/offendingcommit/openconcho.git
cd openconcho
pnpm install
pnpm dev
Open http://localhost:5173 and enter your Honcho URL when prompted.
Desktop app (Tauri)
Additional prerequisites: Rust stable + Tauri system dependencies for your OS.
git clone https://github.com/offendingcommit/openconcho.git
cd openconcho
pnpm install
pnpm --filter @openconcho/desktop dev
Connecting to your instance
- Enter the base URL of your Honcho instance (e.g.
http://localhost:8000) - Optionally enter an API token if your instance requires auth
- Click Test connection — the UI reports whether auth is needed
- Click Save — you're in
Production build
pnpm build # web only → packages/web/dist/
pnpm --filter @openconcho/desktop build # desktop → packages/desktop/src-tauri/target/release/bundle/
Stack
| Layer | Library |
|---|---|
| Desktop shell | Tauri v2 |
| Framework | React 19 + Vite 8 |
| Routing | TanStack Router v1 (file-based) |
| Data fetching | TanStack Query v5 |
| API client | openapi-fetch (typed from openapi.json) |
| Styling | Tailwind CSS v4 + CSS custom properties |
| Animation | framer-motion |
| Icons | lucide-react |
| Lint / format | Biome 2 |
| Tests | Vitest 4 + Testing Library |
| Releases | semantic-release (conventional commits) |
Development
pnpm dev # Vite dev server (web, http://localhost:5173)
pnpm test # Vitest test suite
pnpm lint:fix # Biome lint + format
pnpm typecheck # TypeScript strict check
pnpm generate:api # Regenerate src/api/schema.d.ts from openapi.json
Regenerating API types
When your Honcho instance is updated, pull a fresh schema and regenerate:
curl http://your-honcho-url/openapi.json -o packages/web/openapi.json
pnpm --filter @openconcho/web generate:api
Privacy
- Base URL and token stored in
localStorageunderopenconcho:config - Theme preference stored in
localStorageunderopenconcho:theme - No telemetry, no analytics, no external requests beyond your configured Honcho instance
Contributing
Open an issue first for significant changes. PRs welcome.
License
MIT
Languages
TypeScript
92.8%
Shell
2.8%
JavaScript
1.3%
CSS
1.2%
Rust
0.7%
Other
1.2%