A desktop debate interface built with Python and Tkinter for running structured multi-agent conversations across different LLM providers.
It lets multiple agents debate a question turn by turn, streams the conversation live, and generates a final synthesis at the end. The app supports LM Studio, OpenAI-compatible endpoints, and Anthropic through separate API adapters.
- Modern dark grayscale UI
- Live streamed debate view
- Final synthesis panel
- Preset-based multi-agent personalities
- Separate provider adapters in the
apifolder - Supports:
- LM Studio legacy
- OpenAI-compatible chat completions
- OpenAI-compatible responses endpoints
- Anthropic messages API
- Configurable:
- endpoint
- provider
- model
- timeout
- rounds
- max tokens
- temperature
- top p
- API key
.
├── agentic_gui.py
├── config.txt
├── presets
│ └── various_presets.txt
└── api
├── __init__.py
├── lm_studio.py
├── openai.py
└── anthropic.py
- Python 3.10+
requests
Install dependencies:
pip install requestspython agentic_gui.pyThe app reads settings from config.txt.
Example:
provider=auto
endpoint=http://localhost:1234/v1/chat/completions
model=mistral-small-3.2-24b-instruct-2506
timeout=300
rounds=3
api_key=
max_tokens=4096
temperature=0.7
top_p=1.0
provider=auto selects the adapter based on the endpoint.
Detection rules:
.../api/v1/chat→ LM Studio legacy.../v1/messages→ Anthropic- anything else → OpenAI-compatible
Use this if your LM Studio server exposes:
http://localhost:1234/api/v1/chat
Config:
provider=lm_studio
endpoint=http://localhost:1234/api/v1/chat
Important:
- this legacy endpoint does not accept
max_tokens - advanced generation settings are intentionally not sent there
Recommended for LM Studio.
Config:
provider=openai
endpoint=http://localhost:1234/v1/chat/completions
or:
provider=auto
endpoint=http://localhost:1234/v1/chat/completions
This mode supports:
max_tokenstemperaturetop_p
Use with providers that expose:
https://your-provider.com/v1/chat/completions
Config:
provider=openai
endpoint=https://your-provider.com/v1/chat/completions
model=your-model
api_key=your-key
If your provider exposes:
https://your-provider.com/v1/responses
Use:
provider=openai
endpoint=https://your-provider.com/v1/responses
model=your-model
api_key=your-key
Use:
provider=anthropic
endpoint=https://api.anthropic.com/v1/messages
model=claude-sonnet-4-20250514
api_key=your-key
Anthropic requests include:
x-api-keyanthropic-versionmax_tokens
Presets live in the presets folder and define the debate agents and prompts.
Example preset:
[meta]
name=Two Philosophers
description=Analytic Philosopher 1 vs existential Philosopher 2 with final synthesis.
[agent1]
name=Philosopher 1
system<<END
You are Philosopher 1. Your personality is analytic, skeptical, rational, precise, and systematic.
END
[agent2]
name=Philosopher 2
system<<END
You are Philosopher 2. Your personality is existential, humanistic, intuitive, imaginative, and dialectical.
END
[prompts]
opening_prompt<<END
Original question:
{question}
You are starting the dialogue. State your position clearly and defend it. End by asking {other_name} one pointed philosophical question.
END
reply_prompt<<END
Original question:
{question}
Dialogue so far:
{transcript}
Continue as {name}. Respond directly to {other_name}'s latest claims. Strengthen your own position. End by asking {other_name} one pointed philosophical question.
END
synthesis_system<<END
You are a synthesis agent. Read the full exchange and produce:
1. The strongest point made by Philosopher 1
2. The strongest point made by Philosopher 2
3. The central disagreement
4. A synthesized final answer to the original question
END
synthesis_prompt<<END
Original question:
{question}
Full dialogue:
{transcript}
END
- The app loads the selected preset
- Each agent takes turns responding to the same question
- The conversation is streamed live into the debate panel
- After the final round, a synthesis agent produces a final summary
The interface includes:
- provider selector
- endpoint field
- model field
- timeout
- rounds
- max tokens
- temperature
- top p
- API key
- preset selector
- question editor
- live debate panel
- synthesis panel
This usually happens when using LM Studio legacy:
http://localhost:1234/api/v1/chat
That endpoint does not accept max_tokens.
Fix options:
- use the legacy LM Studio adapter:
provider=lm_studio endpoint=http://localhost:1234/api/v1/chat - or switch to the OpenAI-compatible LM Studio endpoint:
provider=openai endpoint=http://localhost:1234/v1/chat/completions
Make sure you have:
provider=anthropic- a valid
api_key - endpoint set to:
https://api.anthropic.com/v1/messages
Check:
- endpoint path is correct
- model name is valid for your provider
- API key is present if required
- use
/v1/chat/completionsor/v1/responsesdepending on the server
Make sure the presets folder exists and contains at least one valid .txt preset file.
provider=lm_studio
endpoint=http://localhost:1234/api/v1/chat
model=mistral-small-3.2-24b-instruct-2506
timeout=300
rounds=3
api_key=
max_tokens=4096
temperature=0.7
top_p=1.0
provider=openai
endpoint=http://localhost:1234/v1/chat/completions
model=mistral-small-3.2-24b-instruct-2506
timeout=300
rounds=3
api_key=
max_tokens=4096
temperature=0.7
top_p=1.0
provider=openai
endpoint=https://api.openai.com/v1/chat/completions
model=gpt-4.1
timeout=300
rounds=3
api_key=your-key
max_tokens=4096
temperature=0.7
top_p=1.0
provider=anthropic
endpoint=https://api.anthropic.com/v1/messages
model=claude-sonnet-4-20250514
timeout=300
rounds=3
api_key=your-key
max_tokens=4096
temperature=0.7
top_p=1.0
roundshas no artificial maximum in the UI- LM Studio legacy intentionally ignores advanced generation fields
- provider-specific request formatting is handled in the
apifolder - errors from the server are surfaced in the UI dialog to help debugging