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

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 .canvaschat files

Getting Started

Prerequisites

  • Python 3.11+
  • Pixi (recommended) or uv

Installation

# Clone the repository
git clone https://github.com/yourusername/canvas-chat.git
cd canvas-chat

# Install with pixi
pixi install

# Or with uv
uv sync

Running

# With pixi
pixi run dev

# Or directly
uv run app.py

Open your browser to the URL shown (usually http://127.0.0.1:8765).

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. Create a matrix: Select one or more context nodes, type /matrix <context> to create an evaluation table
  9. Navigate: Drag the handle (⋮⋮) to move nodes, scroll to zoom, double-click canvas to fit content
  10. Export: Click 💾 to save your session as a .canvaschat file

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

This version

0.1.9

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.9.tar.gz (203.2 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.9-py3-none-any.whl (112.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: canvas_chat-0.1.9.tar.gz
  • Upload date:
  • Size: 203.2 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.9.tar.gz
Algorithm Hash digest
SHA256 8b49095abecc499f516ccd2f37aa19e56e538f1694085b3f2a390f7dadd7e55c
MD5 9ade0c183989a955e2e9f2db4a543af5
BLAKE2b-256 7c3e6597ec4bfe642f22477bea927a96ab6cc883233ac8ec56e1f9321341e19b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: canvas_chat-0.1.9-py3-none-any.whl
  • Upload date:
  • Size: 112.8 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.9-py3-none-any.whl
Algorithm Hash digest
SHA256 526c4ce6cab8730c12d23520b80a8231b5593a107140149013743221a90eb981
MD5 3b0de6438a8f5175808107fbb6f72e6a
BLAKE2b-256 9b1e233f3ac67170aa9c6c1647056a850ba12d2dbf08f1cc253703af2b50155a

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