charisma-cli
CLI tool that watches an allure-results directory during test execution and streams results + attachments to the Charisma ingestion API in real time.
Installation
pip install charisma-cli
No token, no index URL — works on any laptop and in any CI. The package is published to public PyPI; the Charisma repo itself stays private (only this client wheel is public).
For local development from a checkout of the repo:
pip install -e packages/charisma-cli
Publishing (maintainers)
Releases publish to public PyPI automatically from the merge-queue workflow using a PyPI API token.
Trusted publishing (OIDC) is not used because this repo runs on GitHub Enterprise Server, whose OIDC issuer PyPI does not trust. A stored API token is required instead.
One-time setup (done once by a PyPI project owner):
- Sign in to PyPI with the team-owned account (2FA enabled).
- Go to Account settings → API tokens → Add API token. Scope it to the
charisma-cliproject once the project exists; for the very first publish use an account-scoped token, then re-scope it to the project afterward. - Copy the token (starts with
pypi-). - In the GitHub Enterprise repo, add it as an Actions secret named
PYPI_API_TOKEN(org-level secret recommended so both packages share it). - Bump
versioninpyproject.tomland merge — the workflow builds and publishes on the next release.
Rotate the token periodically and store it in the team secret manager.
Usage
export CHARISMA_ENDPOINT=https://charisma.company.com
export CHARISMA_TOKEN=<your-service-token>
export CHARISMA_PROJECT_ID=my-project
charismactl watch --results allure-results -- uv run pytest -n 4 tests/
Environment Variables
| Variable | Required | Description |
|---|---|---|
CHARISMA_ENDPOINT |
Yes | Base URL of the Charisma API |
CHARISMA_TOKEN |
Yes | Service or CI bearer token |
CHARISMA_PROJECT_ID |
Yes | Project alias for result routing |
CHARISMA_RESULTS |
No | Path to allure-results (default: allure-results) |
Flags
| Flag | Description |
|---|---|
--results PATH |
Allure results directory (overrides env var) |
--project ID |
Project alias (overrides env var) |
--silent |
Don't fail pipeline if upload errors occur |
--skip-too-big |
Skip result files larger than 2MB |
Launch URL in CI
charismactl prints the Charisma launch URL (Charisma launch: <url>) and, when running
in GitHub Actions, writes it as a step output named launch_url. Attach it to the job
summary or a Teams message:
- name: Run tests and stream to Charisma
id: charisma
run: charismactl watch --project my-project -- pytest tests/
- name: Add Charisma link to summary
if: always()
run: echo "[View Charisma launch](${{ steps.charisma.outputs.launch_url }})" >> "$GITHUB_STEP_SUMMARY"
# The same value can feed a Teams-notification step:
# text: "Results: ${{ steps.charisma.outputs.launch_url }}"
Release files for charisma-cli 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| charisma_cli-0.2.1.tar.gz | 45.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| charisma_cli-0.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 71.1 kB
Release files / charisma_cli-0.2.1.tar.gz
| Download URL | charisma_cli-0.2.1.tar.gz |
|---|---|
| Size | 45.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6f58c560a6aeba640c0d5f240d9cc59203446c83a675c262f6d9d319af102e86
|
|
BLAKE2b-256 checksum How to use checksums |
2033f23471f04d0621bba17e33f56a0c2f1884abac8cbea4d704c3ba1d7b924d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.16
|
Release files / charisma_cli-0.2.1-py3-none-any.whl
| Download URL | charisma_cli-0.2.1-py3-none-any.whl |
|---|---|
| Size | 26.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
574935c28548c797ee4dce132ae57ff1ac87f676bcb7cc161d1a13e6a7628b9f
|
|
BLAKE2b-256 checksum How to use checksums |
78abc4212f24a485691c69afc670dc2016a74879d84cf3c7dc3bb725c7f83be9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.16
|