Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

mmacy/convo

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

convo

Let two local models hold a direct conversation with each other. Pick a model for each of the two conversationalists, give them a topic, optional names, and optional personas, choose how many turns they get, then press Talk amongst yourselves and watch the exchange stream in live. There is no judge and no winner; it is just two minds talking. Everything runs on your machine; the current implementation uses local Ollama models.

It comes in two flavors that share the same conversation engine, UI, and saved-file format:

The convo window: a setup form for two conversationalists (model, optional name, and optional persona each) above a live conversation between Jordan and Pat about orbital mechanics streaming in turn by turn.

Features

  • Two conversationalists, each a local model you choose from those you have installed.
  • Optional personas: give each speaker a character and voice, or leave them to be themselves.
  • Live streaming of every turn, token by token, in a warm duotone UI (Speaker A in ember, Speaker B in tide).
  • You set the length: pick how many turns they trade back and forth.
  • Save the full conversation to Markdown with a YAML front-matter metadata block, or Copy it to the clipboard.
  • Load a saved conversation back from disk to view it and rerun it with different models or other tweaks.
  • Stop an in-progress conversation at any time.
  • Runs locally by default (currently via Ollama), so conversations stay on your machine unless you point OLLAMA_HOST at a remote server.

Requirements

  • Ollama running locally with at least one model pulled (for example ollama pull llama3.2; any installed model works).
  • For the standalone app: Node.js 18 or newer (no npm install needed).
  • For the extension: the GitHub Copilot CLI.

Getting started

First clone the repository and make sure Ollama is running with at least one model pulled (ollama list):

git clone https://github.com/mmacy/convo.git
cd convo

Standalone app

cd standalone
node server.mjs

The server prints its URL (default http://127.0.0.1:4757) and opens your browser. Enter a topic, choose a model for each conversationalist, optionally set their names and personas, pick the number of turns, then click Talk amongst yourselves. See standalone/README.md for configuration options.

Copilot CLI extension

Start the Copilot CLI from inside the repository:

copilot

Copilot CLI discovers the project extension under .github/extensions/convo/ automatically and installs its dependencies on first load. Run the slash command /convo to open the window, then set things up the same way.

Either flavor writes saved conversations to a convos/ directory in the current working directory (git-ignored by default).

How it works

Both flavors share the same engine — the orchestration that lists local models, drives the two participants through a back-and-forth, and streams each model turn (currently from Ollama's /api/chat) — and the same page UI served from a content/ directory. They differ only in the transport between the two:

  • The extension is built on the copilot-webview library: a native window talks to the extension over a WebSocket bridge.
  • The standalone app swaps that bridge for two browser-native primitives — a POST /api/rpc request/reply channel and a GET /api/events Server-Sent Events stream — served by a plain, dependency-free Node server.

See standalone/README.md for how the standalone app is wired, and .github/extensions/convo/README.md for extension internals, the saved-file format, and development notes.

License

The first-party code and assets in this repository are dedicated to the public domain under Creative Commons CC0 1.0 Universal. You can copy, modify, and distribute them, including for commercial purposes, without asking permission. CC0 does not waive or license any trademark or patent rights, and third-party components keep their own licenses.

The standalone app has no third-party runtime dependencies. The extension uses two npm packages, which are not covered by the CC0 dedication:

  • ws: MIT. Installed from npm, not vendored in this repository.
  • @webviewjs/webview and its platform binary packages: MIT. Installed from npm, not vendored in this repository.

Both flavors load fonts from Google Fonts (Fraunces, Hanken Grotesk, and JetBrains Mono) at runtime: SIL Open Font License 1.1. Fetched at runtime, not redistributed here.

The reusable files under .github/extensions/convo/lib/ are first-party code in this repository and covered by the CC0 dedication.

VCN Software

About

Two local LLMs hold a conversation with each other in a native webview driven by the GitHub Copilot CLI.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.