Skip to main content

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).

Try It Online

No installation required! Try Canvas Chat at ericmjl--canvas-chat-fastapi-app.modal.run.

Bring your own API keys (configured in Settings).

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
  • LLM Committee: Use /committee <question> to consult multiple LLMs and synthesize answers
  • Web Research: Use /research <topic> to generate research reports via Exa
  • Web Search: Use /search <query> to search the web via Exa
  • Image Analysis: Upload, paste, or drag-and-drop images for multimodal AI analysis
  • Markdown & Math Rendering: Full markdown support with LaTeX math rendering (KaTeX) for inline \(...\) and display \[...\] math
  • Multiple LLM Providers: Support for OpenAI, Anthropic, Google, Groq, GitHub Models, and local models via Ollama
  • Local-First: All data stored in your browser (IndexedDB)
  • Export/Import: Save sessions as .canvaschat files

Configuration

Click the ⚙️ Settings button to add your API keys:

Keys are stored locally in your browser's localStorage.

Usage

  1. Start chatting: Type a message and press Enter
  2. Reply to a node: Click the ↩️ Reply button or click a node then type
  3. Branch from text: Select text within a node, then click 🌿 Branch to create a highlight node
  4. Multi-select: Cmd/Ctrl+Click multiple nodes to respond to all at once
  5. Auto-layout: Click 🔀 to automatically arrange all nodes
  6. Search the web: Type /search <query> to search via Exa
  7. Research a topic: Type /research <topic> to generate a research report
  8. Consult LLM committee: Type /committee <question> to get opinions from multiple LLMs
  9. Add images: Upload, paste (Ctrl/Cmd+V), or drag-and-drop images for AI analysis
  10. Create a matrix: Select one or more context nodes, type /matrix <context> to create an evaluation table
  11. Navigate: Drag the handle (⋮⋮) to move nodes, scroll to zoom, double-click canvas to fit content
  12. Export: Click 💾 to save your session as a .canvaschat file

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

canvas_chat-0.1.14.tar.gz (230.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

canvas_chat-0.1.14-py3-none-any.whl (120.7 kB view details)

Uploaded Python 3

File details

Details for the file canvas_chat-0.1.14.tar.gz.

File metadata

  • Download URL: canvas_chat-0.1.14.tar.gz
  • Upload date:
  • Size: 230.7 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

Hashes for canvas_chat-0.1.14.tar.gz
Algorithm Hash digest
SHA256 406d9c7825763999b6d2d2466759d3d2ad095bb0eb091a7e67b8035dc9b12d63
MD5 259971019f0d38aee7914f72cb8baff7
BLAKE2b-256 aa53039ed4acec104b6dd8a529de21e7559caccdcfe8e81a46020bb8e45f56e7

See more details on using hashes here.

File details

Details for the file canvas_chat-0.1.14-py3-none-any.whl.

File metadata

  • Download URL: canvas_chat-0.1.14-py3-none-any.whl
  • Upload date:
  • Size: 120.7 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

Hashes for canvas_chat-0.1.14-py3-none-any.whl
Algorithm Hash digest
SHA256 214f7d49310163fc800590dff0c2a2585fbb726fdcb9b044c407a9fdce0b3da4
MD5 3702f5f3cde88b0979bf450273dff676
BLAKE2b-256 35d3fa3c1947b13895714e30abbaad556fa66e760ed6bc4ca1433ea5c68ccd61

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page