Skip to content

Commit 788f9de

Browse files
committed
Release v1.1.1: multi-provider UX, mixed routing, docs, and tests
1 parent fbcbe18 commit 788f9de

10 files changed

Lines changed: 1204 additions & 318 deletions

File tree

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
name: Build PolyCouncil (Cross-Platform)
2+
3+
on:
4+
workflow_dispatch:
5+
push:
6+
branches: [ main ]
7+
8+
jobs:
9+
build:
10+
strategy:
11+
fail-fast: false
12+
matrix:
13+
os: [windows-latest, ubuntu-latest, macos-latest]
14+
runs-on: ${{ matrix.os }}
15+
16+
steps:
17+
- name: Checkout
18+
uses: actions/checkout@v4
19+
20+
- name: Setup Python
21+
uses: actions/setup-python@v5
22+
with:
23+
python-version: '3.11'
24+
25+
- name: Install dependencies
26+
run: |
27+
python -m pip install --upgrade pip
28+
pip install -r requirements.txt
29+
pip install pyinstaller
30+
31+
- name: Build (Windows)
32+
if: runner.os == 'Windows'
33+
shell: pwsh
34+
run: |
35+
python -m PyInstaller build_exe.spec --clean
36+
37+
- name: Build (Linux/macOS)
38+
if: runner.os != 'Windows'
39+
run: |
40+
pyinstaller council.py --name PolyCouncil --clean --noconfirm --windowed --onefile
41+
42+
- name: Package artifact (Windows)
43+
if: runner.os == 'Windows'
44+
shell: pwsh
45+
run: |
46+
Compress-Archive -Path dist/PolyCouncil.exe -DestinationPath dist/PolyCouncil-windows.zip -Force
47+
48+
- name: Package artifact (Linux)
49+
if: runner.os == 'Linux'
50+
run: |
51+
chmod +x dist/PolyCouncil || true
52+
tar -czf dist/PolyCouncil-linux.tar.gz -C dist PolyCouncil
53+
54+
- name: Package artifact (macOS)
55+
if: runner.os == 'macOS'
56+
run: |
57+
chmod +x dist/PolyCouncil || true
58+
tar -czf dist/PolyCouncil-macos.tar.gz -C dist PolyCouncil
59+
60+
- name: Upload artifact
61+
uses: actions/upload-artifact@v4
62+
with:
63+
name: PolyCouncil-${{ runner.os }}
64+
path: |
65+
dist/PolyCouncil.exe
66+
dist/PolyCouncil-windows.zip
67+
dist/PolyCouncil
68+
dist/PolyCouncil-linux.tar.gz
69+
dist/PolyCouncil-macos.tar.gz
70+
if-no-files-found: ignore

.gitignore

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ token.json
2121
logs/
2222
*.log
2323
*.log.*
24+
polycouncil_crash.log
2425

2526
# Models / weights / large artifacts
2627
models/
@@ -52,6 +53,8 @@ temp/
5253
*.tmp
5354
*.swp
5455
*.swo
56+
.pytest_cache/
57+
pytest-cache-files-*
5558

5659
# Editors / workspace
5760
*.code-workspace
@@ -83,6 +86,7 @@ test_*.py
8386
# Icons and resources (keep only essential)
8487
*.ico
8588
*.png
89+
!docs/*.png
8690
*.rc
8791
PolyCouncil.rc
8892

@@ -95,4 +99,4 @@ README_ICON_FIX.md
9599
*.sqlite
96100
*.sqlite3
97101
*.db-journal
98-
council_stats.db
102+
council_stats.db

README.md

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<div align="center">
44

5-
**A multi-model deliberation engine for LM Studio**
5+
**A multi-model deliberation engine for local and hosted providers**
66

77
*Running a single model gives you one perspective. Running a council gives you… perspective squared.*
88

@@ -47,6 +47,10 @@ This creates a more reliable, research-friendly way to:
4747
- **Rubric-Based Scoring**: Each model evaluates every other response across customizable criteria (accuracy, clarity, completeness, etc.)
4848
- **Consensus Voting System**: Final answer chosen through weighted voting based on rubric scores
4949
- **Leaderboard Tracking**: Track which models perform best over time with persistent statistics
50+
- **Multi-Provider Support**:
51+
- LM Studio (default, OpenAI-compatible)
52+
- OpenAI-compatible APIs (custom base URL + API key)
53+
- Ollama (local runtime)
5054

5155
### Persona System
5256

@@ -69,7 +73,7 @@ This creates a more reliable, research-friendly way to:
6973

7074
### User Interface
7175

72-
- **Centralized Settings**: Easy-to-use settings dialog for configuration
76+
- **Provider Profiles**: Save multiple providers and load/add models from each without retyping settings
7377
- **Debug Log Dock**: Dockable panel for detailed analysis of the deliberation process
7478
- **Modern UI**: Clean, intuitive interface built with PySide6 with automatic dark/light theme support
7579
- **Persistent Settings**: All preferences saved automatically
@@ -127,11 +131,15 @@ python council.py
127131

128132
### First Time Setup
129133

130-
1. **Launch LM Studio** and ensure at least one model is loaded
134+
1. **Launch at least one model provider** (LM Studio, Ollama, or hosted API)
131135
2. **Start PolyCouncil** (either EXE or `python council.py`)
132-
3. **Configure Base URL** (default: `http://localhost:1234`) if LM Studio uses a different port
133-
4. **Click "Connect"** to discover available models
134-
5. **Select models** by checking the boxes next to model names
136+
3. **Choose Provider** in the top bar:
137+
- Local: `LM Studio` (`http://localhost:1234`) or `Ollama` (`http://localhost:11434`)
138+
- Hosted: `OpenAI-compatible API` + API service preset (`OpenAI`, `OpenRouter`, `Google Gemini`) + API key
139+
4. Click **Add Models** to append that provider's models
140+
5. Repeat step 3-4 for any additional providers
141+
6. Use **Add Provider** to save reusable provider configurations
142+
7. Select models (including mixed providers) and run the council
135143

136144
### Using Personas
137145

@@ -203,13 +211,16 @@ Test how different personas affect model responses. Useful for understanding bia
203211

204212
![PolyCouncil Result](Polycouncil2.png)
205213

214+
![Saved Providers Workflow](docs/saved-providers.png)
215+
206216
---
207217

208218
## Configuration
209219

210220
PolyCouncil automatically saves your preferences, including:
211-
- LM Studio base URL
212-
- Selected models
221+
- Active provider selection and API service
222+
- API endpoint settings and keys
223+
- Saved provider profiles
213224
- Persona assignments
214225
- Concurrency settings
215226
- Debug mode preference
@@ -222,10 +233,10 @@ Settings are stored in `council_settings.json` in the application directory.
222233
## Troubleshooting
223234

224235
### Models Not Appearing
225-
- Ensure LM Studio is running
226-
- Verify at least one model is loaded in LM Studio
227-
- Check that the base URL is correct (default: `http://localhost:1234`)
228-
- Click "Refresh Models" if needed
236+
- Verify the selected provider and endpoint are correct
237+
- For hosted APIs, confirm a valid API key is set
238+
- For LM Studio/Ollama, ensure the local server is running and models are loaded
239+
- Use **Add Models** to append, or **Replace List** to rebuild from one provider
229240

230241
### Slow Performance
231242
- Reduce "Max concurrent jobs" to 1-2

RELEASE_NOTES_v1.1.1.md

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# PolyCouncil v1.1.1 Release Notes
2+
3+
**Release Date:** February 18, 2026
4+
5+
## Highlights
6+
7+
- Added first-class multi-provider support:
8+
- LM Studio
9+
- Ollama
10+
- OpenAI-compatible hosted APIs
11+
- Added hosted API presets:
12+
- OpenAI
13+
- OpenRouter
14+
- Google Gemini (OpenAI-compatible endpoint)
15+
- Added mixed-provider councils: local and hosted models can now run in the same round.
16+
17+
## UX and Workflow Improvements
18+
19+
- Provider setup is now centered in the main screen for faster use.
20+
- Added additive model loading workflow:
21+
- **Add Models** appends provider models to the current list.
22+
- **Replace List** explicitly rebuilds the list from one provider.
23+
- **Clear Model List** removes all loaded models.
24+
- Added saved provider profiles:
25+
- **Add Provider**, then **Use** or **Add Models** per saved provider.
26+
- Single-voter and selection workflows now work with provider-tagged model names.
27+
28+
## Stability and Reliability Fixes
29+
30+
- Fixed incorrect LM Studio model endpoint usage (`/v1/models` enforced for LM Studio).
31+
- Hardened provider switching and model list merge paths.
32+
- Added hosted-provider key validation before model discovery.
33+
- Added crash logging (`polycouncil_crash.log`) for unhandled exceptions.
34+
- Fixed discussion mode argument mismatch and added cancellation handling.
35+
- Fixed discussion export question capture.
36+
- Reduced capability detection overhead with metadata caching.
37+
- Replaced mutable default list arguments in runtime paths.
38+
39+
## Developer and QA
40+
41+
- Added automated tests for:
42+
- Provider config/default behavior and endpoint construction
43+
- Capability detection helpers
44+
- Mixed-provider vote routing
45+
- Voting JSON parsing/validation
46+
- Discussion manager provider/cancellation behavior

0 commit comments

Comments
 (0)