polis-cli
Thin command-line client for driving Pol.is-family instances — Pol.is (Computational Democracy Project) and Voxit (Sitra / COSS Finland fork) — over their HTTP API.
Lets an operator or an AI agent run the full conversation lifecycle machine-to-machine, no browser required:
polis login # authenticate against an instance (profile-based)
polis convo create # create a conversation (topic, description, settings)
polis seed statements.csv # bulk-seed statements
polis convo open | close # lifecycle
polis moderate # accept/reject queued statements
polis convo status # live participation + opinion-cluster snapshot
polis export # raw votes, comments, cluster CSVs
polis simulate # synthetic participants (testing only)
Design rules
- Arm's length, always. This CLI is an independent HTTP client. It contains no Pol.is code — it never vendors, links, or modifies the (AGPL-3.0) Pol.is/Voxit codebase; it only talks to unmodified instances over their API. Keep it that way.
- Pin per instance. Pol.is has no stable public API contract. Each profile records the instance's version/tag; the client's endpoint map is written against pinned versions (currently:
stablebranch, mid-2026). - Two auth flavors. Newer instances: OIDC bearer tokens (any issuer; token must carry an
emailclaim). Older instances (and likely Voxit): legacy email/password session login.polis loginautodetects. --jsoneverywhere. Every command supports machine-readable output so an agent can drive the CLI.
Dev sandbox
The upstream Pol.is repo (cloned separately, e.g. ../polis — not part of this repo) ships a docker-compose dev stack. See scripts/prove_loop.py for the end-to-end smoke test this CLI is built against.
Status
- Phase 0 — runtime-prove the create → seed → vote → close → export loop against the local sandbox
- Phase 1 — CLI commands (login, convo, seed, moderate, status, export, simulate)
- Phase 2 — export → deliberAIde synthesis ingestion
- Phase 3 — Azure Container Apps disposable-instance template (public demo)
- Phase 4 — MCP twin (same commands as MCP tools)
Install
pip install polis-cli # command: polis
Part of the civic tech agent-bridges toolkit
polis-cli is one bridge in the civic tech agent-bridges toolkit: open-source
command-line clients that let any AI agent drive a civic-tech platform through its own API, so
platforms interoperate without waiting for a standards process. Sibling bridges: consul-cli (CONSUL DEMOCRACY), decidim-cli (Decidim), deliberaide-cli (deliberAIde).
Relationship to upstream
This is an independent client. It contains no Pol.is or Voxit source code and speaks only to the documented HTTP API of a running instance. deliberAIde offers it to the Pol.is and Voxit community for adoption; the Apache-2.0 licence is chosen so the code can be vendored into AGPL-3.0 (Pol.is) or EUPL-1.2 (Voxit) repositories without friction, since permissive code can be combined into copyleft ones but not the other way round.
Licence
Apache-2.0 — see LICENSE and NOTICE. Copyright 2026 deliberAIde.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file polis_cli-0.1.0.tar.gz.
File metadata
- Download URL: polis_cli-0.1.0.tar.gz
- Upload date:
- Size: 99.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5e58224ad030fe735eef5170dd088d6973ece0063f0f3546338594f8e7621c95
|
|
| MD5 |
87d24bef9a039cff4472e05b409471a3
|
|
| BLAKE2b-256 |
b6e730ab352370bbac50576857a1b94e5c778ba37c65fc015e3c9187d3caf2c1
|
File details
Details for the file polis_cli-0.1.0-py3-none-any.whl.
File metadata
- Download URL: polis_cli-0.1.0-py3-none-any.whl
- Upload date:
- Size: 74.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7f7919cf23c18242444c42ac49269e92780cc6b33ecae1a194ee4517b215e5b3
|
|
| MD5 |
db47d4a664dd973f3941659172fbc614
|
|
| BLAKE2b-256 |
d02a3bc2ab37adfc1c45dd34e903a6a13980cd2aa42928d2914973c9774fd582
|