Releases: iblameandrew/open-deepthink
Release list
0.1.12 — Skill code entrypoints for QNN + QDAD
Skills run real code
Portable /qnn and /qdad skills now point harnesses at executable pipelines with a full parameter contract.
Library APIs
deepthink.qnn.run_qnn_pipeline(llm, prompt, params=…)— topology, seeds, span, epochs, self-attention, Mirror Descent, Solution-Space Reportdeepthink.qdad.run_qdad_pipeline(llm, params=…, user_prompt=…)— App Slot Machine / Qualitative Diffusion LangGraph engine
Skill package (each zip)
SKILL.md— procedure + Run the code sectionCODE_REFERENCE.md— params, Python API, return shaperun_qnn.py/run_qdad.py— CLI for shellsINSTALL.md
Examples
export OPEN_DEEPTHINK_ROOT=/path/to/open-deepthink
python skills/qnn/run_qnn.py --prompt "explore this deadlock" --qnn-mode auto
python skills/qdad/run_qdad.py --prompt "cozy night writing app…" --n 3 --denoising-steps 2Assets: qnn-skill-0.1.12.zip, qdad-skill-0.1.12.zip
0.1.11 — Qualitative Self-Attention in Brainstorm
Qualitative Self-Attention in Brainstorm
Brainstorm QNN neurons no longer only see graph neighbors (the previous layer). Each forward pass runs a colony-style self-attention step over past / non-local neurons.
How it works
- Collect candidates: earlier non-adjacent layers this epoch + other agents' multi-epoch memory
- Heuristic pair score (shared persona/content lexicon → strength + distance buckets)
- Top-k edges inject an attended-value block into the agent prompt
- Store edges in
state['attention_edges']; log as[QNN ATTEND]
Inspired by colony Qualitative Self-Attention (AttentionAgent / Social Playbook).
Files
deepthink/self_attention.pyapp.pybrainstorm agent forward pathtests/phase_self_attention.py- README + RELEASE_NOTES
See RELEASE_NOTES.md for full detail.
0.1.10 — Vortex side panels + Slot Machine debug mode
Diffusion Vortex side panels
Canvas whirlpool (from spirits VortexAnimation) now lives as a side panel next to chat — not fullscreen.
- App Slot Machine and Brainstorm each get a Diffusion Vortex panel
- Spins when a run starts; idle placeholder when quiet
- Shared mode-workspace layout (panel + chat)
App Slot Machine simulation / debug mode
- Simulation Mode runs the full QDAD pipeline with CoderMockLLM
- No OpenRouter API key required in debug
- Fixed foundation / noise / critic / synthesizer mock matchers
Files
- js/components/vortex-animation.js
- css/theme.css · index.html · app.py
- Tests in phase7_mocks / phase11_regression
See RELEASE_NOTES.md for full detail.
0.1.9 — Portable /qdad skill (Qualitative Diffusion)
Portable /qdad skill
Qualitative Diffusion is now a drop-in skill for Grok Build and any agentic coder — no open-deepthink server required.
Technique (analysis embedded in the skill)
| Classical diffusion | Qualitative Diffusion |
|---|---|
| Continuous noise | High-temperature qualitative noise |
| Denoiser | Critic agents (reverse diffusion / score matching) |
| Latent basis | Nouns × verbs (orthogonal language basis) |
| Caption → image | App vibe → App Build Prompt |
Procedure: foundation → grid → noise → denoise⟲ → synthesize → handoff
Install (Grok Build)
mkdir -p ~/.grok/skills/qdad
cp skills/qdad/SKILL.md ~/.grok/skills/qdad/SKILL.md
# or:
unzip qdad-skill-0.1.9.zip -d ~/.grok/skills/qdad a cozy productivity app for writers who work at night, soft dark mode, offline-first
Assets
qdad-skill-0.1.9.zip— newqnn-skill-0.1.9.zip— repackaged companion
Also in repo
- App Slot Machine Mode UI +
deepthink/qdad/LangGraph engine (0.1.8) - Full skill bodies:
skills/qdad/,skills/qnn/
See README sections Qualitative Diffusion and Portable Skills.
0.1.8 — Qualitative Diffusion (App Slot Machine Mode)
Qualitative Diffusion (QDAD)
Diffusion, re-implemented at a purely qualitative scale.
Algorithm Design Mode is replaced by App Slot Machine Mode — the Qualitative Diffusion App Designer.
Technique
| Classical diffusion | Qualitative Diffusion |
|---|---|
| Continuous noise | Controlled qualitative noise at high temperature |
| Denoising network | Critic agents (reverse diffusion / score matching) |
| Latent basis | Nouns × verbs as orthogonal basis directions |
| Image from a prompt | Buildable agentic coding prompt from an aesthetic app prompt |
Pipeline (LangGraph)
foundation → grid → noise → denoise⟲ → synthesize
- Foundation — N nouns + N verbs (shared qualitative basis)
- Grid — N×N FeatureAgents bound to noun[i] × verb[j]
- Forward diffusion — parallel noisy features at Temperature Scale
- Reverse diffusion — CriticAgents clean the matrix over Denoising Steps
- Decode — Synthesizer emits a structured App Build Prompt + transparent matrix
Philosophy
- Language is the computational medium
- Nouns and verbs act as orthogonal basis directions
- High temperature = controlled qualitative noise
- Critic agents = qualitative reverse diffusion / score matching
- Vague Midjourney-style prompt → concrete, buildable app specification
Package
deepthink/qdad/— state, nodes, graph, pipeline, utilsdeepthink/chains/qdad_chains.py- Brainstorming-identical frontend shell + QDAD controls (N, temps, steps)
- Tests:
tests/phase_qdad.py
See README section New in 0.1.8 — Qualitative Diffusion and RELEASE_NOTES.md.
0.1.7 — QNN skill: verb/noun problem-space spanning
Tagline: QNN skill + brainstorm panel — personas span from problem-space verbs and nouns (same method as Algorithm Mode)
Skill rewrite (import this zip)
Personas are not flat expert labels. They use Algorithm Mode DNA:
- Seed a pool of linguistically loaded verbs + nouns (problem-related + far semantic fields)
- Sample per-column
guiding_wordsword-vectors - Input-span career / attributes / skills from those words
- Layered epochs → epoch maps → Mirror Descent → reframe → Solution-Space Report
Install
Download qnn-skill-0.1.7.zip below:
unzip qnn-skill-0.1.7.zip -d ~/.grok/skills
# Windows PowerShell:
# Expand-Archive qnn-skill-0.1.7.zip -DestinationPath C:\Users\def78\.grok\skills -ForceOr from the repo:
cp skills/qnn/SKILL.md ~/.grok/skills/qnn/SKILL.mdAlso in this release
- Brainstorm expert panel runs the full QNN deepthink algorithm (layered forward pass fixed, epoch maps, reframe)
- Algorithm seed generation mixes nouns with verbs
Docs
0.1.6 — Portable /qnn skill for agentic coders
Tagline: Portable /qnn skill — import anytime an agentic coder is stuck or a feature needs wider depth
What's new
Portable QNN skill
Ship an agent-agnostic Qualitative Neural Network brainstorm procedure as a drop-in skill for any coding agent (Grok, Claude Code, Cursor, Codex, custom harnesses).
Use it when:
- You're stuck — deadlock, race, perf cliff, circular local fixes
- A feature needs wider depth — richer metrics, APIs, UX options, research framing
What it does:
- Builds an unstick or enrich brief
- Picks topology (auto or manual L×W×epochs)
- Seeds guiding concepts and materializes layered personas
- Runs multi-epoch forward passes with Mirror Descent + reframing
- Delivers a Solution-Space Report (strategies + falsifiers + first probes)
- Hands off to the normal edit → run → debug loop — does not ship the patch itself
Install from this release
Download qnn-skill-0.1.6.zip below, then:
unzip qnn-skill-0.1.6.zip -d ~/.grok/skills
# Windows: Expand-Archive qnn-skill-0.1.6.zip -DestinationPath C:\Users\def78\.grok\skillsOr from the repo:
mkdir -p ~/.grok/skills/qnn
cp skills/qnn/SKILL.md ~/.grok/skills/qnn/SKILL.mdThen invoke:
/qnn explore this deadlock / performance regression
/qnn richer metrics for the training dashboard
Docs
v0.1.5 — Attach entire repositories as context
Attach entire local project folders as human input in Brainstorming and Algorithm Design modes. Skips vendor/build/cache paths, prioritizes README and entry files, preserves relative paths, and caps context at 50k chars.
0.1.4 — Unified Flux UI theme
Unified Flux UI theme — app chrome adapts to NodeChat
Tagline: The rest of the app now matches the NodeChat aesthetic. The chat component itself is unchanged.
Features
- *New \css/theme.css* — glass surfaces, purple/cyan accents, pill controls, and dark luxury styling aligned with NodeChat
- NodeChat left untouched — \css/node-chat.css\ and \js/components/node-chat.js\ are unchanged
- Isolated chat mounts — brainstorm and diagnostic chat use transparent .section--chat-mount\ frames
- Updated surfaces — settings, mode tabs, forms, attachments, memory estimator, logs, graph viewer, distillation console, perplexity chart
- Scoped form styles — global inputs/buttons exclude .node-chat\ internals
Files changed
- \css/theme.css\ (new)
- \index.html\
- \js/components/memory-calculator.js\
- \deepthink/init.py\ (version bump)
Full details in RELEASE_NOTES.md.
v0.1.3 — Code file attachments
Release Notes — 0.1.3
Tag: 0.1.3
Date: 2026-06-16
Tagline: "Attach source code files as context in Brainstorming and Algorithm Design"
✨ Features
Code file attachments
- Brainstorming — New Attach Code button alongside PDF attachments, plus a paperclip button in the NodeChat input bar. Supports
.py,.js,.ts,.java,.go,.rs, and 30+ other text/code extensions. - Algorithm Design — Attach code files above the prompt; their contents are injected into the graph run as context.
- Backend — New
POST /upload_code_filesendpoint reads uploaded source files (UTF-8 with fallback), caps total context at 50k chars, and returns fenced code blocks for the LLM.
Files
app.py—/upload_code_filesendpoint; algorithm mode merges attached code into promptindex.html— attachment UI for both modesjs/components/node-chat.js— paperclip attach button in chat inputcss/node-chat.css— attach button styles
Release Notes — 0.1.2
Tag: 0.1.2
Date: 2026-06-15
Tagline: "Unlimited QNN dimensions with a live memory estimator for 8 GB laptops"
✨ Features
Unlimited agent spanning (width × height)
- Algorithm Design — CoT trace depth is no longer capped at 32. New
Manual width (unlimited) mode lets you set any number of agents per
layer; MBTI archetypes cycle when width exceeds the checkbox count. - Brainstorming — Manual/Massive topology layers and width inputs no longer
cap at 10,000. Backend accepts any positive integer the user enters.
QNN Memory Estimator
A live calculator panel in both Algorithm Design and Brainstorming
modes shows:
- Total agents (
width × height) and estimated total state size in MB/GB - Per-agent RAM at the selected epoch count
- 8 GB laptop fit check with headroom / overflow warning and a suggested
max agent count - Expandable single-agent growth table (epochs 1–10) as an educated guess
based on runtime constants: ~30 KB persona, ~5–8 KB/epoch memory append,
~450 KB summarization cap per agent
Users can adjust the laptop RAM input (default 8 GB); local LlamaCpp reserves
~1.5 GB for the model automatically.
Files
js/components/memory-calculator.js— estimator moduleindex.html— calculator UI, unlimited dimension inputs, algorithm manual width toggleapp.py— removed 10k backend caps; algorithm manual width with MBTI cycling
Release Notes — 0.1.1
Tag: 0.1.1
Date: 2026-06-10
Tagline: "Perplexity chart no longer accumulates duplicate points across anchors / modes"
🐛 Bug Fixes
Perplexity chart accumulation (BUG-12)
The "Average Perplexity per Epoch" chart could keep adding duplicate data points
every time a new run (or new anchor within a multi-anchor distillation) emitted
a perplexity value, because the frontend blindly pushed onto a parallel-arrays
state and the chart instance was destroy()-and-recreated on every update.
Compounding the issue:
- The distillation loop creates a fresh
DistillationGraphper anchor, so
each anchor'sepochs_runcounter reset to 1. The frontend received the
same epoch label (e.g.epoch=1) from multiple anchors and treated each
one as a new data point. - The main-graph
calculate_metrics_node(used by both Algorithm and
Brainstorming modes) was broadcasting{"epoch": ..., "perplexity": ...}
as a bare JSON, but the frontend SSE filter only routeddistillation_update
events to the chart, so algorithm/brainstorm perplexity was silently dropped. - The chart code itself was a
destroy()+new Chart(...)anti-pattern
that flickered on every update, and the labels variable was misspelled
(allLbelsData) — a footgun for future fixes.
Fix
-
Backend (
app.py):calculate_metrics_nodenow broadcasts a typed
{"type": "perplexity_update", "source": "graph", "session_id": ..., "epoch": ..., "perplexity": ...}
event so algorithm and brainstorm runs feed the chart.- The distillation loop now tracks a
cumulative_stepcounter that
strictly increases across both epochs and anchors, and includes it in
thedistillation_updatepayload asstep.
-
Frontend (
index.html):- Chart state rewritten from parallel arrays (
allLbelsData/allPerplexityValues)
to a singleMapkeyed by step, with values stored as{value, label}. updatePerplexityChart(step, value, label)now replaces an existing
entry instead of appending a duplicate.renderPerplexityChartuses Chart.js v4's idiomatic
chart.data.datasets[0].data = ...; chart.update('none')for in-place
updates instead of destroying and recreating the chart.resetPerplexityChartresets state and clears the chart on every new
algorithm or distillation run.- SSE handler now recognizes the new
perplexity_updateevent type in
addition todistillation_update. - The misspelled
allLbelsDatais gone.
- Chart state rewritten from parallel arrays (
-
Tests (
tests/phase11_regression.py):- New BUG-12a regression: directly invokes the metrics node and asserts
the broadcast JSON includestype: "perplexity_update",source: "graph",
session_id, and a numericperplexity. - New BUG-12b regression: source-checks the distillation loop for the
cumulative_stepcounter and"step":field in the broadcast. - New BUG-12c regression: source-checks
index.htmlfor the dedup-by-step
contract (no legacyallLbelsData/allPerplexityValues, presence of
perplexityByStep/resetPerplexityChart/SSE listener for
perplexity_update) and asserts the dedup invariant against a Python
mirror of the JS algorithm.
- New BUG-12a regression: directly invokes the metrics node and asserts
Verification
All previously-passing tests still pass (158/158 across phases 1–9). The
4 unrelated pre-existing failures in phase 10/11 are due to a stale
local-deepthink path in the test file and are out of scope for this
release.
Release Notes — 0.1.0
Tag: 0.1.0
Date: 2026-06-06
Tagline: "Official release out of beta"
This marks the first official non-beta release of open-deepthink. The core QNN engine, Mirror Descent loops, three operating modes, export/import, and full test suite are considered stable.
See the new "Future Directions" section in the README for thoughts on integrating QNN-style evolutionary exploration into practical coding agent workflows (e.g. a /qnn command for large-scale structured brainstorming on sticky problems).
Release Notes — beta-0.0.3
Tag: beta-0.0.3
Date: 2026-06-05
Tagline: "The hard-fought quality release — 11 bugs fixed, 195/195 tests passing"
"A week of debugging is better than a month of 'works on my machine'."
This release is the result of a complete, exhaustive test suite of the entire
codebase (11 phases × 195 checks). Every previously-known failure path was
either fixed or pinned with a regression test. No known malfunctions remain.
🐛 Bug Fixes
Critical (broke core flows)
-
DistillationMockLLMhad stale prompt patterns (app.py)
The chains indistillation_chains.pyhad been rewritten ("Socratic Task
Master…", "Seed Creator (The Dialectic Synthesizer)", "deepening our
inquiry in a new Epoch") but the mock LLM still matched the OLD text.
In debug mode, every distillation epoch silently failed to evolve
topics or generate new questions. Fixed by re-aligning the patterns. -
CoderMockLLMhardcoded 4 sub-problems (app.py)
The mock decomposer returned the same static 4-item list regardless of
the requested count, soreframe_and_decomposealways failed for
non-4-agent QNNs. Fixed by reading the requested count from the prompt. -
Missing
grandalfdependency (requirements.txt)
graph.get_graph().draw_ascii()requiresgrandalf; without it, the
entire/build_and_run_graphendpoint crashed with a confusing error.
Addedgrandalftorequirements.txt. -
synthesis_nodereturned "no inputs" in brainstorm mode (app.py)
The empty-agent_outputscheck fired before the brainstorm branch,
but brainstorm synthesis reads frommemory, notagent_outputs.
Reordered the checks so brainstorm mode can synthesize.
Medium (data/UX quality)
-
Duplicate
get_opinion_synthesizer_chain(chains/init.py)
Two modules defined functions with the same name; the import order
silently shadowed the synthesis version with the brainstorm version.
Renamed the brainstorm one toget_brainstorming_opinion_synthesizer_chain. -
app.GraphStatemissing brainstorm fields (app.py)
app.GraphStatewas missingbrainstorm_document_context,
brainstorm_prior_conversation, andbrainstorm_problem_summarythat
the code accesses. Runtime worked because ofstate.get(...), but
the type was lying. Added the fields. -
clean_and_parse_jsoncouldn't repair Windows backslash paths (utils.py)
Strings like{"path": "C:\\Users\\foo"}(single backslashes, as an
LLM would write) were returned asNone. Fixed the regex to not
double-escape already-escaped backslash pairs (needed non-capturing
group(?:\\)to make the lookbehind work in Python'sremodule).
Low (hygiene)
-
Stray
print()statements inTokenUsageTracker,
RAPTOR._cluster_nodes, and both chat endpoints — all converted to
log_stream.put(...)so logs flow through the SSE broadcast. -
Typo "Sesion" in
/chatand/diagnostic_chatprint statements —
fixed to "Session" and routed throughlog_stream. -
.gitignoremissedvenv/,tests/,distillation_output/,
test_results/. Updated. -
No
__version__orpyproject.toml— release tracking was
impossible. Added `__vers...