Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
185 commits
Select commit Hold shift + click to select a range
b672d90
Update README.md
gobbleyourdong Mar 31, 2026
23a6371
Full mode = everything by default (9B + eddies + SD-Turbo)
gobbleyourdong Mar 31, 2026
af210a3
Smoke test + install diffusers by default in setup.sh
gobbleyourdong Mar 31, 2026
3769cfd
Landing page built by Tsunami autonomously — 4 iterations, 5 minutes
gobbleyourdong Apr 1, 2026
98989b2
Ark parity: force tool calling, stronger format rules, search depth h…
gobbleyourdong Apr 1, 2026
c48cda9
tide_build: wave decomposes apps, eddies write components in parallel
gobbleyourdong Apr 1, 2026
44206df
Revert tool_choice to auto — required causes 500s on 9B with 20 tools
gobbleyourdong Apr 1, 2026
3ae0feb
Rename tide→swell + rewrite README for humans
gobbleyourdong Apr 1, 2026
15a9a97
Reduce bootstrap tools from 20 to 15 — fix 500s on 9B
gobbleyourdong Apr 1, 2026
78faae8
Rename whirlpool→break + restart 9B with 32K context
gobbleyourdong Apr 1, 2026
1e700f7
Mandatory verify loop + save-findings nudge — the real ark gaps
gobbleyourdong Apr 1, 2026
50abc89
Enable watcher by default — 2B reviews every 3rd tool call
gobbleyourdong Apr 1, 2026
4a1d398
Drag tool — headless browser QA that tests apps before shipping
gobbleyourdong Apr 1, 2026
aaf6587
Rename drag→riptide — pulls back what shouldn't ship
gobbleyourdong Apr 1, 2026
4f5220b
Rename riptide→undertow — pulls back what's not ready
gobbleyourdong Apr 1, 2026
8adf6ef
Add star on github button to demo page hero
gobbleyourdong Apr 1, 2026
94be5e6
Update demo CLI animation with real naming: wave, eddies, swell, brea…
gobbleyourdong Apr 1, 2026
99deb93
README: add undertow to flow diagram + glossary
gobbleyourdong Apr 1, 2026
de3b6cb
Triangulation methodology — verify facts before delivering
gobbleyourdong Apr 1, 2026
acc5fe1
Current + Circulation + Pressure — semantic tension measurement system
gobbleyourdong Apr 1, 2026
e839aeb
Wire current/circulation/pressure into agent loop
gobbleyourdong Apr 1, 2026
244493c
Wire tension into tool choice + kill the watcher
gobbleyourdong Apr 1, 2026
f4face9
Fix search: ddgs package + arXiv API backend
gobbleyourdong Apr 1, 2026
ce8e0af
Fix demo page: correct names, stats, install URL, scaling table
gobbleyourdong Apr 1, 2026
eee5687
Adversarial review — cross-examine reasoning before delivery
gobbleyourdong Apr 1, 2026
b3a6025
Undertow rewrite — dumb QA that pulls levers, wave is the engineer
gobbleyourdong Apr 1, 2026
9035e53
Move test/run scripts to tests/ — clean root
gobbleyourdong Apr 1, 2026
8ab40da
Update README: tension system, undertow rewrite, research-first results
gobbleyourdong Apr 1, 2026
bd690b1
Soften undertow language in README
gobbleyourdong Apr 1, 2026
551af43
GitHub code search — wave finds real implementations before building
gobbleyourdong Apr 1, 2026
d67bc08
Move prompt to disk — 4419 tokens → 465 tokens (90% reduction)
gobbleyourdong Apr 1, 2026
3dcb3a7
Motion detection + sequence testing + plan-as-test architecture
gobbleyourdong Apr 1, 2026
af57f2a
Decomposition as default — small files, not monoliths
gobbleyourdong Apr 1, 2026
848b7ed
Cap research at 3 searches, skip plan files — just build
gobbleyourdong Apr 1, 2026
c4248bf
Inline build rules — skip file read, save an iteration
gobbleyourdong Apr 1, 2026
f1d3a45
Fix double-escaped newlines in file_write
gobbleyourdong Apr 1, 2026
792778e
Auto-undertow — QA fires automatically after every HTML write
gobbleyourdong Apr 1, 2026
59094a5
Force React + TypeScript — no more vanilla HTML/JS
gobbleyourdong Apr 1, 2026
f7d7c20
Update building.md — tsx component examples, no vanilla
gobbleyourdong Apr 1, 2026
5033fef
MoE build via swell — parallel eddies write typed components
gobbleyourdong Apr 1, 2026
db1e0e3
Auto-serve on the good dev port — one port, every project
gobbleyourdong Apr 1, 2026
49ca1b0
Swell: compile check + auto-fix loop until clean, then undertow
gobbleyourdong Apr 1, 2026
4d13175
MoE in the framework — wave orchestrates, no hardcoding
gobbleyourdong Apr 1, 2026
8aa2d99
Clean scaffold + swell write_targets — blank slate for the wave
gobbleyourdong Apr 1, 2026
2d010ae
No scaffold — wave writes every file itself
gobbleyourdong Apr 1, 2026
e709379
Auto-serve once, HMR handles the rest
gobbleyourdong Apr 1, 2026
4920312
Plan for Manus-level app building + 6 hour dev loop
gobbleyourdong Apr 1, 2026
a19ee3f
Phase 1: project_init tool — blank Vite+React+TS in one call
gobbleyourdong Apr 1, 2026
c220b1d
Phase 1b: todo.md checklist pattern + Manus intel in plan
gobbleyourdong Apr 1, 2026
05f56bf
Three.js game scaffold — the Unity new project for the web
gobbleyourdong Apr 1, 2026
c093885
Phase 1b+2: todo.md injection + auto compile check
gobbleyourdong Apr 1, 2026
4edbba1
Update plan.md — calculator passes with auto-compile, Phase 1b+2 results
gobbleyourdong Apr 1, 2026
031aa0c
React app scaffold + clean quiz test runner
gobbleyourdong Apr 1, 2026
a5f76ae
project_init picks from scaffold library — the Manus pattern
gobbleyourdong Apr 1, 2026
3936dda
Quiz passes — 11 typed components, compiles clean
gobbleyourdong Apr 1, 2026
3f594e3
Dashboard scaffold — Layout, Sidebar, Card, StatCard, DataTable + rec…
gobbleyourdong Apr 1, 2026
50b61a7
ALL 4 APPS PASS — calculator, quiz, excel-diff from one-prompt runners
gobbleyourdong Apr 1, 2026
3d02d6c
Form app scaffold — FileDropzone, editable DataTable, xlsx/csv parser
gobbleyourdong Apr 1, 2026
d266d96
Landing scaffold — Navbar, Hero, Section, FeatureGrid, Footer
gobbleyourdong Apr 1, 2026
5bf9c01
Excel diff v2 passes with form-app scaffold, Phase 3 largely complete
gobbleyourdong Apr 1, 2026
646976b
Phase 4: all 3 apps render and function — styling gap identified
gobbleyourdong Apr 1, 2026
cf65900
Base dark theme for all scaffolds — apps look good automatically
gobbleyourdong Apr 1, 2026
a622e46
Dark theme working — calculator has styled buttons on dark bg
gobbleyourdong Apr 1, 2026
66018b8
Fix unicode double-escaping in file_write (\\u00f7 → ÷)
gobbleyourdong Apr 1, 2026
f300f96
Unicode fix verified — calculator renders clean symbols
gobbleyourdong Apr 1, 2026
565ba30
Expose CSS utilities in prompt — grid/flex/card classes available
gobbleyourdong Apr 2, 2026
b61295a
Global React in all scaffolds — fixes React.FC without import
gobbleyourdong Apr 2, 2026
e31bde2
Update progress — rhythm game compiles, React global fix, CSS utilities
gobbleyourdong Apr 2, 2026
33c2dba
Manus scaffold docs analyzed — roadmap for scaffold library expansion
gobbleyourdong Apr 2, 2026
a1ee2f4
PixiJS 2D game + fullstack scaffolds — 7 templates total
gobbleyourdong Apr 2, 2026
a4e61f2
Clean stray nested dir in pixijs scaffold
gobbleyourdong Apr 2, 2026
f7629d5
Snake game test runner — tests pixijs-game scaffold
gobbleyourdong Apr 2, 2026
a5107ae
Snake game passes — 5/5 apps compile and render from one-prompt runners
gobbleyourdong Apr 2, 2026
3f12b42
Todo app + landing page test runners — tests fullstack + landing scaf…
gobbleyourdong Apr 2, 2026
8b6a394
Todo app passes — fullstack scaffold works, styled dark UI
gobbleyourdong Apr 2, 2026
eb889f0
7/7 compile, full scaffold matrix tested
gobbleyourdong Apr 2, 2026
c191148
Stub detection — block delivery if App.tsx not wired
gobbleyourdong Apr 2, 2026
39ab0f1
Manus internal arch doc — converging architectures
gobbleyourdong Apr 2, 2026
d503e7d
Landing page FIXED — stub detection works, 6/7 render fully
gobbleyourdong Apr 2, 2026
b9bab31
7/7 RENDER — perfect score, every app works
gobbleyourdong Apr 2, 2026
71bca9d
Requirement-based scaffold classifier — the Manus pattern
gobbleyourdong Apr 2, 2026
9f42b9d
Progress: classifier upgraded, full Manus intel catalogued
gobbleyourdong Apr 2, 2026
a92c5ff
Reference architecture docs saved to intel/
gobbleyourdong Apr 2, 2026
d0381e7
Scaffold READMEs — the instruction set for the coding model
gobbleyourdong Apr 2, 2026
ae8ee2e
Progress: scaffold READMEs, inline README in project_init
gobbleyourdong Apr 2, 2026
b36c539
Calculator with README: 10 iterations, proper grid layout
gobbleyourdong Apr 2, 2026
b58e381
Fix _delivery_attempts AttributeError + snake/excel results
gobbleyourdong Apr 2, 2026
c9e1722
Crypto dashboard test — tests dashboard scaffold with charts
gobbleyourdong Apr 2, 2026
ba9892d
Dashboard test: compiles but stub App.tsx at 30 max iters
gobbleyourdong Apr 2, 2026
456eb2d
App.tsx FIRST, not last — prevents stub delivery on complex apps
gobbleyourdong Apr 2, 2026
7c95805
App.tsx FIRST works — dashboard wired, no more stub delivery
gobbleyourdong Apr 2, 2026
9be594d
CSS import in App.tsx stubs + prompt instruction
gobbleyourdong Apr 2, 2026
0aee389
Crypto dashboard renders — stat cards + line charts in 17 iterations
gobbleyourdong Apr 2, 2026
817dbcb
Remove intel directory
gobbleyourdong Apr 2, 2026
b5c9cac
Clean plan.md + weather dashboard test
gobbleyourdong Apr 2, 2026
e19df49
Weather dashboard: 22 iters, duplicate declaration bug
gobbleyourdong Apr 2, 2026
10aa953
Ignore .vite cache directory
gobbleyourdong Apr 2, 2026
56b5c28
Kanban board test — state management + multi-column layout
gobbleyourdong Apr 2, 2026
45bc724
Auto-wire App.tsx — framework generates imports from components
gobbleyourdong Apr 2, 2026
5955b34
Auto-scaffold — provision project when 9B skips project_init
gobbleyourdong Apr 2, 2026
f40bb79
Auto-wire on exit — no more stubs when hitting max iterations
gobbleyourdong Apr 2, 2026
0466679
Auto-inject CSS import into App.tsx — dark theme always loads
gobbleyourdong Apr 2, 2026
7925fc1
Fix installer — 9B always, no 27B download, oceanic naming
gobbleyourdong Apr 2, 2026
d4ca6ee
Pre-scaffold hidden step + richer README patterns
gobbleyourdong Apr 2, 2026
80ec27b
Richer dashboard README — bar chart, pie chart, table examples
gobbleyourdong Apr 2, 2026
fea3781
Richer 3D game README — keyboard, intervals, spawning, game state
gobbleyourdong Apr 2, 2026
0c3bb32
Pre-built UI components + scaffold file protection
gobbleyourdong Apr 2, 2026
c04e5ec
Realtime scaffold — WebSocket server + useWebSocket hook
gobbleyourdong Apr 2, 2026
167de75
UI components in all scaffolds + chat test runner
gobbleyourdong Apr 2, 2026
63f4e42
Swell in build instructions — parallel component writing
gobbleyourdong Apr 2, 2026
9e3bc7a
Fix f-string brace escape in prompt — was crashing on startup
gobbleyourdong Apr 2, 2026
b6379bf
Data-viz scaffold — recharts + d3 + papaparse
gobbleyourdong Apr 2, 2026
9232f53
Data-viz README + classifier split dashboard vs viz
gobbleyourdong Apr 2, 2026
a53c7a2
Hardened installer — Mac fixes, lean deps, Playwright, better errors
gobbleyourdong Apr 2, 2026
452f5d0
Stall detection + block repeated project_init (from PR #3 ideas)
gobbleyourdong Apr 2, 2026
8c0501d
Auto-swell — framework fires eddies when App.tsx imports missing comp…
gobbleyourdong Apr 2, 2026
510a784
Desktop app — terminal-style UI with split panes for Windows
gobbleyourdong Apr 2, 2026
3b1e00b
Windows one-click setup.bat — download, install, run
gobbleyourdong Apr 2, 2026
bd2391a
GitHub Actions: build Windows .exe automatically
gobbleyourdong Apr 2, 2026
47f7846
Fix Windows installer — correct llama.cpp release URLs
gobbleyourdong Apr 2, 2026
5d33a82
Fix classifier: 'dash' matches dashboard scaffold
gobbleyourdong Apr 2, 2026
148fb7c
Launcher auto-downloads llama-server + models if missing
gobbleyourdong Apr 2, 2026
50f3812
Launcher auto-scales: lite mode for <6GB RAM
gobbleyourdong Apr 2, 2026
bc5bdc9
setup.bat detects VRAM not just RAM — won't brick small GPUs
gobbleyourdong Apr 2, 2026
c2f0064
Launcher checks VRAM not RAM — matches setup.sh and setup.bat
gobbleyourdong Apr 2, 2026
6f2852b
Overnight plan — shadcn-lite component library
gobbleyourdong Apr 2, 2026
8f9d5b1
shadcn-lite: 10 styled UI components in all web scaffolds
gobbleyourdong Apr 2, 2026
9d6ab36
Fancy UI: StarRating, GlowCard, Parallax, AnimatedCounter
gobbleyourdong Apr 2, 2026
89ed624
IDE-style desktop UI — VS Code layout with chat + preview + terminal
gobbleyourdong Apr 2, 2026
47da761
3D shaders + procedural meshes + sprite sheets + portfolio components
gobbleyourdong Apr 2, 2026
83217d7
Niche components: BeforeAfter, ColorPicker, Timeline, Kanban, SpriteA…
gobbleyourdong Apr 2, 2026
a8cbda8
CSS effects: AnnouncementBar, Marquee, TypeWriter, GradientText
gobbleyourdong Apr 2, 2026
856e9df
ScrollReveal, Slideshow, procedural textures
gobbleyourdong Apr 2, 2026
ea43925
Plan complete — 28 UI components, 9 scaffolds, everything verified
gobbleyourdong Apr 2, 2026
c5a8556
feat: add Windows support (setup.ps1 + cross-platform Python fixes)
jamesburton Apr 1, 2026
4085326
feat: add tsu.ps1 Windows entry point
jamesburton Apr 1, 2026
cc38d98
fix(setup.ps1): detect CUDA compute capability and pass to cmake
jamesburton Apr 1, 2026
960b5aa
fix(setup.ps1): auto-detect VS 2026+ and pass -allow-unsupported-comp…
jamesburton Apr 1, 2026
559dd66
fix(setup.ps1): use vswhere to detect cmake's actual VS generator
jamesburton Apr 2, 2026
1c39350
fix(setup): copy tsu.ps1 to install dir; fix stale profile alias repl…
jamesburton Apr 2, 2026
3af6d1d
fix(tsu.ps1): use separate stdout/stderr log files in Start-Process
jamesburton Apr 2, 2026
2fb3e2c
fix(tsu.ps1): add $DIR-relative llama-server search paths
jamesburton Apr 2, 2026
924914d
fix(tsu.ps1): use Where-Object -like instead of -Filter for model search
jamesburton Apr 2, 2026
76b0535
fix(setup): install from requirements.txt, show real verification err…
jamesburton Apr 2, 2026
3f6445b
fix(setup): fix UnicodeEncodeError in verification on cp1252 Windows …
jamesburton Apr 2, 2026
0b70ace
fix(tsu): replace ?. null-conditional with explicit if guard in Find-…
jamesburton Apr 2, 2026
21bc34c
fix: properly escape --chat-template-kwargs JSON for Windows
jamesburton Apr 2, 2026
5ecca50
docs: expand Windows install notes in README
jamesburton Apr 2, 2026
5f2891e
fix: address all PR review comments
jamesburton Apr 2, 2026
52bd47b
Replace setup.bat with battle-tested Windows installer
gobbleyourdong Apr 2, 2026
2d4650f
Launcher: correct URLs, CUDA DLLs, lite mode both ports, image gen al…
gobbleyourdong Apr 2, 2026
46c778e
Merge pull request #6 from jamesburton/feature/windows-support
gobbleyourdong Apr 2, 2026
089a898
Contributing guide + PR #6 merged (Windows PowerShell support)
gobbleyourdong Apr 2, 2026
d1ed336
Roadmap — everything done, in progress, and planned
gobbleyourdong Apr 2, 2026
5782594
Glass box UI — see the agent work in real time
gobbleyourdong Apr 2, 2026
0a7a24c
Streaming bridge — tool calls flow to UI in real time
gobbleyourdong Apr 2, 2026
b85e460
File watcher — real-time filesystem updates in the UI
gobbleyourdong Apr 2, 2026
57c8ac5
Fix watcher: 3s poll, send latest file on connect
gobbleyourdong Apr 2, 2026
ff5c3a4
VS Code layout: file sidebar, scoped to active project
gobbleyourdong Apr 2, 2026
f30f5b8
3-column layout: sessions | chat | workspace with file tree
gobbleyourdong Apr 2, 2026
09c331f
Name sessions from first prompt — extracts key words
gobbleyourdong Apr 2, 2026
838701d
Hide sessions (non-destructive) — X button archives, files stay on disk
gobbleyourdong Apr 2, 2026
dbac377
Sessions only created on prompt — deleting last shows welcome, no aut…
gobbleyourdong Apr 2, 2026
9e28a3a
Persist sessions + broadcast + replay buffer
gobbleyourdong Apr 2, 2026
140706a
Deduplicate consecutive chat messages — no more delivery spam
gobbleyourdong Apr 2, 2026
4303086
Fix chat scroll — input pinned at bottom, messages scroll
gobbleyourdong Apr 2, 2026
90a99b3
Skip replay buffer if session already loaded from localStorage
gobbleyourdong Apr 2, 2026
5d13384
Disable replay buffer — localStorage handles it
gobbleyourdong Apr 2, 2026
221c0e2
Render chat from log — full re-render on load/switch, no appending du…
gobbleyourdong Apr 2, 2026
3ac2d81
Wave emoji favicon — no more missing icon
gobbleyourdong Apr 2, 2026
eb704a6
Short session names — max 2 words, 20 chars, more stop words
gobbleyourdong Apr 2, 2026
bce18b0
Stronger dedup — skip messages with same first 50 chars
gobbleyourdong Apr 2, 2026
d6cf334
Fix delivery spam at source — stop streaming after message_result
gobbleyourdong Apr 2, 2026
7789dd2
Fix path resolution — handles all 9B path patterns
gobbleyourdong Apr 2, 2026
1594744
Agent loop overhaul — vision grounding, no iteration cap, Docker
gobbleyourdong Apr 2, 2026
c052a6e
Fix PowerShell window closing — pause before exit on all paths
gobbleyourdong Apr 2, 2026
beb0c44
SD-Turbo in-process — no server, no Docker, just works
gobbleyourdong Apr 2, 2026
da76748
Eddy is a role, not a model — unified endpoint config
gobbleyourdong Apr 2, 2026
89a02a1
Auto-inject React hook imports — 2B forgets useState
gobbleyourdong Apr 2, 2026
8315fe8
Windows scripts from live testing — setup.ps1 + tsu.ps1
gobbleyourdong Apr 2, 2026
fef325a
Lower full-mode threshold to 8GB — 9B fits in 5.3GB
gobbleyourdong Apr 2, 2026
d1b85dc
Clean up tsu.ps1 output + fix deps for Windows
gobbleyourdong Apr 2, 2026
225acc3
Fix Windows spam — pull vision_ground from bootstrap, strip emojis
gobbleyourdong Apr 2, 2026
fd06b24
Auto-update on launch — like Claude Code
gobbleyourdong Apr 2, 2026
52a6841
Improve CLI interaction flow
meanaverage Apr 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
9 changes: 9 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
workspace/
models/
node_modules/
*.egg-info/
__pycache__/
.git/
*.pyc
.env
dist/
33 changes: 33 additions & 0 deletions .github/workflows/build-windows.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: Build Windows Desktop

on:
workflow_dispatch: # manual trigger from GitHub UI
push:
paths:
- 'desktop/**'
- '.github/workflows/build-windows.yml'

jobs:
build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4

- uses: actions/setup-python@v5
with:
python-version: '3.12'

- name: Install dependencies
run: |
pip install pyinstaller pywebview websockets httpx pyyaml ddgs pillow

- name: Build .exe
working-directory: desktop
run: |
pyinstaller launcher.py --name=Tsunami --onefile --windowed --add-data "index.html;." --add-data "ws_bridge.py;." --add-data "../tsunami;tsunami" --add-data "../config.yaml;." --add-data "../scaffolds;scaffolds" --hidden-import=websockets --hidden-import=webview --hidden-import=tsunami --hidden-import=tsunami.agent --hidden-import=tsunami.config --hidden-import=tsunami.tools

- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: Tsunami-Windows
path: desktop/dist/Tsunami.exe
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -39,3 +39,4 @@ Thumbs.db
intel/
workspace/
*.output
.vite/
61 changes: 61 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# TSUNAMI — Containerized Autonomous Agent
# Works on Mac (Apple Silicon + Intel), Linux, Windows (WSL2)
#
# Build: docker build -t tsunami .
# Run: docker run -p 9876:9876 -p 8090:8090 tsunami "build me a calculator"
# UI: open http://localhost:9876 after it builds something
#
# With GPU (NVIDIA):
# docker run --gpus all -p 9876:9876 -p 8090:8090 tsunami "build me a game"
#
# Persist builds across runs:
# docker run -v tsunami-workspace:/app/workspace -p 9876:9876 tsunami "build tetris"

FROM node:22-slim AS base

# System deps
RUN apt-get update && apt-get install -y --no-install-recommends \
python3 python3-pip python3-venv \
git curl cmake build-essential \
&& rm -rf /var/lib/apt/lists/*

WORKDIR /app

# --- Build llama.cpp from source (CPU by default, CUDA if available) ---
RUN git clone --depth 1 https://github.com/ggerganov/llama.cpp /tmp/llama.cpp \
&& cd /tmp/llama.cpp \
&& cmake -B build -DGGML_NATIVE=OFF -DGGML_AVX2=OFF -DGGML_FMA=OFF \
&& cmake --build build --config Release -j$(nproc) --target llama-server \
&& cp build/bin/llama-server /usr/local/bin/llama-server \
&& rm -rf /tmp/llama.cpp

# --- Python deps ---
COPY requirements.txt* ./
RUN python3 -m pip install --break-system-packages --no-cache-dir \
httpx pyyaml ddgs pillow primp websockets \
&& python3 -m pip install --break-system-packages --no-cache-dir playwright \
&& python3 -m playwright install --with-deps chromium 2>/dev/null || true

# --- Copy source ---
COPY . /app/

# --- Download models at build time (cached in image layer) ---
RUN mkdir -p /app/models \
&& echo "Downloading 2B eddy model..." \
&& curl -fSL -o /app/models/Qwen3.5-2B-Q4_K_M.gguf \
"https://huggingface.co/unsloth/Qwen3.5-2B-GGUF/resolve/main/Qwen3.5-2B-Q4_K_M.gguf" \
&& echo "Downloading 9B wave model..." \
&& curl -fSL -o /app/models/Qwen3.5-9B-Q4_K_M.gguf \
"https://huggingface.co/unsloth/Qwen3.5-9B-GGUF/resolve/main/Qwen3.5-9B-Q4_K_M.gguf"

# --- Workspace volume ---
RUN mkdir -p /app/workspace/deliverables

# Ports: wave(8090) eddy(8092) serve(9876) ws-bridge(3002)
EXPOSE 8090 8092 9876 3002

# --- Entrypoint: start everything and run the task ---
COPY docker-entrypoint.sh /docker-entrypoint.sh
RUN chmod +x /docker-entrypoint.sh

ENTRYPOINT ["/docker-entrypoint.sh"]
Loading