Skip to main content

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

  1. 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.
  2. 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: stable branch, mid-2026).
  3. Two auth flavors. Newer instances: OIDC bearer tokens (any issuer; token must carry an email claim). Older instances (and likely Voxit): legacy email/password session login. polis login autodetects.
  4. --json everywhere. 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.

Metadata

Release files for polis-cli 0.1.1

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

Source distribution (sdist)

Source distribution for polis-cli 0.1.1
File Size Uploaded
polis_cli-0.1.1.tar.gz 100.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for polis-cli 0.1.1
File Interpreter ABI Platform
polis_cli-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 176.1 kB

Release files / polis_cli-0.1.1.tar.gz

Download URL polis_cli-0.1.1.tar.gz
Size 100.6 kB
Tags Source
SHA-256 checksum
How to use checksums
dfb28d0421e3de547672de56aba785802fe8422e4c117ac2befa63caf3e1cbcb
BLAKE2b-256 checksum
How to use checksums
caa27edcc417bb94ea760149f3e57fe9fa0faefb49b70445bd19cbec14ec90e1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.9

Release files / polis_cli-0.1.1-py3-none-any.whl

Download URL polis_cli-0.1.1-py3-none-any.whl
Size 75.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
dc9f9f541cd99e10fffe60915efcc277e43bf928ce814262fcacf967e6048673
BLAKE2b-256 checksum
How to use checksums
cc0ea2287cc71277b419ebe2f239079cede00ef665689f62649bfc2fe0c4e0e4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.9

Release history Release notifications | RSS feed

This release

0.1.1 This release

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