A visual, non-linear chat interface where conversations are nodes on an infinite canvas
Project description
Canvas Chat
A visual, non-linear chat interface where conversations are nodes on an infinite canvas. Explore topics by branching, merging, and navigating your discussions as a directed acyclic graph (DAG).
Quick Start
Run Canvas Chat instantly with no installation:
uvx canvas-chat
Your browser will open automatically to the local server.
Features
- Infinite Canvas: Pan, zoom, and navigate your conversations visually
- Branching Conversations: Reply to any message to create a new branch
- Highlight & Branch: Select text within any node to create a highlight excerpt node
- Multi-Select & Merge: Select multiple nodes to combine context
- Context Visualization: See which messages are included in your context
- Auto-Layout: Automatically arrange nodes in a clean left-to-right hierarchy
- Matrix Evaluation: Use
/matrix <context>to create cross-product evaluation tables - Web Research: Use
/research <topic>to generate research reports via Exa - Web Search: Use
/search <query>to search the web via Exa - Multiple LLM Providers: Support for OpenAI, Anthropic, Google, Groq, and local models via Ollama
- Local-First: All data stored in your browser (IndexedDB)
- Export/Import: Save sessions as
.canvaschatfiles
Configuration
Click the ⚙️ Settings button to add your API keys:
- OpenAI: Get from https://platform.openai.com/api-keys
- Anthropic: Get from https://console.anthropic.com/
- Google AI: Get from https://aistudio.google.com/
- Groq: Get from https://console.groq.com/
- Exa (for search/research): Get from https://exa.ai/
Keys are stored locally in your browser's localStorage.
Usage
- Start chatting: Type a message and press Enter
- Reply to a node: Click the ↩️ Reply button or click a node then type
- Branch from text: Select text within a node, then click 🌿 Branch to create a highlight node
- Multi-select: Cmd/Ctrl+Click multiple nodes to respond to all at once
- Auto-layout: Click 🔀 to automatically arrange all nodes
- Search the web: Type
/search <query>to search via Exa - Research a topic: Type
/research <topic>to generate a research report - Create a matrix: Select one or more context nodes, type
/matrix <context>to create an evaluation table - Navigate: Drag the handle (⋮⋮) to move nodes, scroll to zoom, double-click canvas to fit content
- Export: Click 💾 to save your session as a
.canvaschatfile
Development
For contributors or local development:
Prerequisites
- Python 3.11+
- Pixi (recommended) or uv
Setup
git clone https://github.com/ericmjl/canvas-chat.git
cd canvas-chat
pixi install
Running
pixi run dev
Open your browser to the URL shown (usually http://127.0.0.1:7865).
Tech Stack
- Backend: FastAPI
- Frontend: HTMX + vanilla JavaScript + CSS
- LLM: LiteLLM (multi-provider support)
- Storage: IndexedDB (browser-local)
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file canvas_chat-0.1.11.tar.gz.
File metadata
- Download URL: canvas_chat-0.1.11.tar.gz
- Upload date:
- Size: 210.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4730d40941ad6f3afdbee2d9c514dba6d7304906491e3a39944a3614b67c09c8
|
|
| MD5 |
6f02178143e4a12db8241c427bca4a62
|
|
| BLAKE2b-256 |
8d8fef71d3da28cbaf993708e5a7130f94e7c45207eb0578993bf22abaf6871f
|
File details
Details for the file canvas_chat-0.1.11-py3-none-any.whl.
File metadata
- Download URL: canvas_chat-0.1.11-py3-none-any.whl
- Upload date:
- Size: 118.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b32925fa595acf0f45b2ffbc5a126338029f30941914d0fafb706673ebe76e4f
|
|
| MD5 |
f7f98ff4e25f9fde5a0904008a0a9e7f
|
|
| BLAKE2b-256 |
6218b960ebf572746e47bc6064968fa5c3e70d8ef35df24bdbb6194ad403fe1a
|