loosecanvas / README-dev.md
github-actions[bot]
ci: HF Space README (docker frontmatter at root)
10eac44
|
Raw
History Blame Contribute Delete
4.57 kB
# loosecanvas πŸ•ΈοΈ
**Talk through an idea. Watch it become a map β€” and decide which connections are real.**
## πŸ† Hackathon submission
Built for the **Build Small Hackathon** β€” 🌲 Thousand Token Wood track (small local model).
- **Live Space:** [build-small-hackathon/loosecanvas](https://huggingface.co/spaces/build-small-hackathon/loosecanvas) β€” goes live on transfer to the org + made public.
- **Demo video:** _TODO_
- **Field notes (build write-up):** [`submission/FIELD_NOTES.md`](submission/FIELD_NOTES.md)
- **Submission packet:** [`submission/`](submission/) β€” demo script, social drafts, links checklist.
---
loosecanvas is a **local AI thought-mapping canvas**. A small model (Gemma 4 26B-A4B,
~25B params, via a llama.cpp server) sits beside you and turns conversation into a living
knowledge graph: concepts, connections, evidence, and open questions. It can _propose_ a
surprising cross-domain link β€” but it never hides what is a guess, what is grounded, and
what you've confirmed.
- **An AI that proposes, but never decides.** Every model-inferred claim carries an
independent trust state (origin / support / review) and waits for your judgment. The
model can suggest; the validator and reducer decide; you steer.
- **100% local.** Inference runs on your machine via llama.cpp β€” no cloud APIs.
- **A real custom UI.** A genuine Cytoscape.js Gradio component, not a chatbot with a
decorative graph beside it.
> _Screenshot / demo GIF: a populated graph with trust-tagged nodes β€” to be added._
## How it works
A turn is a negotiation, not autocomplete:
1. You converse (or paste text to build a graph from scratch).
2. The model **proposes** scene actions β€” reveal a node, draw an edge, add a hypothesis β€”
streamed as it thinks.
3. A **validator + reducer** decide: every proposed action is checked against the real
graph state; invalid ones are rejected with a reason the model can self-correct from.
4. The canvas updates, and the new claims are tagged by **origin** (`deterministic` /
`user_asserted` / `model_inferred`), **support**, and **review** β€” four independent
fields that never collapse into one. Model output is permanently marked
`model_inferred` and is never silently elevated to a higher-trust origin.
The design philosophy lives in the [constitution](plan/README.md) (files 01–06): the
trust model, the three-layer architecture, and the anti-specialization invariant (the
turn loop must work on any substrate, not just code).
## Run it locally (Windows / PowerShell 7)
```powershell
# 1. Python env (requires uv; uv.lock is committed β†’ reproducible)
uv sync
# 2. Build + install the Gradio custom component (rebuild after any frontend edit)
cd cytoscapecanvas
& ..\.venv\Scripts\gradio.exe cc build --python-path ..\.venv\Scripts\python.exe
cd ..
# 3. Configure
copy .env.example .env # set LOOSECANVAS_ALLOWED_BASE + GEMMA_MODEL_FILENAME
# 4. Place the GGUF model in models/ (see models/README.md)
# 5. Start the llama.cpp server (+ optional local monitoring)
docker compose up
# 6. Run the app
$env:PYTHONPATH = "src"; & .\.venv\Scripts\python.exe -m uvicorn loosecanvas.main:app --port 8000
```
Open **http://localhost:8000**.
> `gradio cc dev` (on :7860/:7861) is a bare component demo with no LLM and no backend β€”
> not the app. Use uvicorn on :8000 for the real product.
### Deploy as a single container
A self-contained [`Dockerfile`](Dockerfile) + [`entrypoint.sh`](entrypoint.sh) run
llama.cpp and the app together in one image (for a Hugging Face Docker Space or any GPU
host). See [`deploy/hf-space/README.md`](deploy/hf-space/README.md).
## Documentation
| Doc | Purpose |
| ---------------------------------- | ---------------------------------------------------------------------------- |
| [plan/README.md](plan/README.md) | The constitution (files 01–06): trust model, architecture, design philosophy |
| [CONTRIBUTING.md](CONTRIBUTING.md) | Commands, quality gate, conventions, pitfalls β€” operational guidance |
| [AGENTS.md](AGENTS.md) | Agent/Copilot dispatch guide |
| [CLAUDE.md](CLAUDE.md) | Claude Code guidance: architecture deep-dive |
| [plan/STATUS.md](plan/STATUS.md) | Active development tracker |
## License
[MIT](LICENSE) Β© 2026 Joshua Sundance Bailey