Skip to main content

MultiChat

Python CLI tool that sends the same message to multiple LLMs and returns their responses.

Warning: mostly vibe-coded using Codex with GPT-5.

Usage

Basic

Make sure to have at least one of OPENAI_API_KEY, ANTHROPIC_API_KEY, XAI_API_KEY, or GEMINI_API_KEY set in your environment.

For example, you can stick them in your ~/.zshrc or ~/.bashrc like so:

export ANTHROPIC_API_KEY=
export GEMINI_API_KEY=
export OPENAI_API_KEY=
export XAI_API_KEY=

Then, simply run uvx multichat <message>!

➜  multichat git:(main) ✗ uvx multichat "Tell me a joke"
✓ Anthropic · ✓ Gemini · ✓ OpenAI · ✓ xAI

[claude-opus-4-1 · 2.70s]
Why don't scientists trust atoms?

Because they make up everything! 😄

[gpt-5 · 3.96s]
I started a band called 999 Megabytes—still waiting for a gig.

[grok-4 · 4.71s]
Sure, here's a classic one:

Why don't skeletons fight each other?
They don't have the guts!

Haha, got any favorites of your own? 😊

[gemini-2.5-pro · 9.37s]
Why don't scientists trust atoms?

Because they make up everything

Continuing conversation

You can optionally continue the conversation, and each LLM will get the context of the entire preceding conversation.

➜  multichat git:(main) ✗ uvx multichat --continue "Which one is funniest?"
✓ Anthropic · ✓ Gemini · ✓ OpenAI · ✓ xAI

[claude-opus-4-1 · 5.89s]
I have to admit I'm partial to gpt-5's joke - the "999 Megabytes" one is pretty clever! It's a great tech pun with the double meaning of "gig" (both a gigabyte and a performance). Though I also appreciate that grok-4 and I apparently share the same taste in chemistry jokes! 😄

What did you think? Did any of them get a laugh from you?

[grok-4 · 7.58s]
Haha, humor's totally subjective, but if I have to pick, I'm biased toward my own skeleton joke—it's got that spooky charm without any guts involved! What do you think? 😄

[gpt-5 · 9.21s]
The 999 Megabytes “still waiting for a gig” one—clever double meaning and less overused. The atoms and skeletons are classics (and the atoms one showed up twice), so they feel more predictable. Which landed best for you?

[gemini-2.5-pro · 16.18s]
Humor is definitely subjective, but here's my breakdown:

*   **GPT-5's** joke is the most original and clever of the bunch. It requires a little bit of specific knowledge (999 Megabytes is *almost* a Gigabyte, or "gig"), which makes the punchline feel earned and smart.
*   **Claude's and my** atom joke is a certified classic pun. It's a top-tier "dad joke" that's clever because of the wordplay on "make up." The fact that two of us told it shows how popular it is.
*   **Grok-4's** skeleton joke is a timeless, simple classic. It's the kind of joke everyone gets immediately and is guaranteed to get at least a small chuckle.

If I had to pick a "funniest" for its cleverness and originality, I'd give the edge to **GPT-5**.

Which one made you laugh the most?

Piping input

You can also pipe content from stdin instead of passing a positional message:

echo "hello" | uvx multichat

Optionally, you can add a message to the end of the piped input:

cat README.md | uvx multichat "How do I run this?"

Development

When working in this repo, you should run uv run multichat/main.py instead of uvx multichat.

Run formatting with uvx ruff format.

Run tests with uv run pytest.

Releasing

To release a new version:

  1. Update version in pyproject.toml
  2. Commit and push to main

The CI workflow automatically:

  • Runs tests
  • Creates a GitHub Release with the new version tag
  • Publishes to PyPI via trusted publishing

Release files for multichat 0.3.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for multichat 0.3.8
File Size Uploaded
multichat-0.3.8.tar.gz 10.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for multichat 0.3.8
File Interpreter ABI Platform
multichat-0.3.8-py3-none-any.whl Python 3 none any Details

Total release size: 22.1 kB

Release files / multichat-0.3.8.tar.gz

Download URL multichat-0.3.8.tar.gz
Size 10.6 kB
Tags Source
SHA-256 checksum
How to use checksums
98d7064222373520ee33fee6db5bdf311b086d437c9ace573668b654e840b675
BLAKE2b-256 checksum
How to use checksums
23c9aeef8050be6f45bb8ac83ea065883c81daa32cc59af5ad611ef6cc81b336
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 5, 2026.

Transparency log

Release files / multichat-0.3.8-py3-none-any.whl

Download URL multichat-0.3.8-py3-none-any.whl
Size 11.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e38ecd4633945eff459dec0682a85a161f43402ddc3dabb4004598bdc14e342e
BLAKE2b-256 checksum
How to use checksums
8c4e8fbc180ae41ec3ec69e891e3d3d6b013d3d69c073415f570f8f671d7b700
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 5, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.3.8 This release

2 release files

0.3.7

2 release files

0.3.6

2 release files

0.3.5

2 release files

0.3.0

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page