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.1.4
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.1.4.tar.gz | 32.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| charisma_cli-0.1.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 53.2 kB
Release files / charisma_cli-0.1.4.tar.gz
| Download URL | charisma_cli-0.1.4.tar.gz |
|---|---|
| Size | 32.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
94b63aa437c39e62304fc0ac2375f0b0fdeb9caab6760817787285ab744a51d9
|
|
BLAKE2b-256 checksum How to use checksums |
af5c15e3c60d12365051fb8d043caaa9d89470295892464c3c213fcb694bb27e
|
| 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.1.4-py3-none-any.whl
| Download URL | charisma_cli-0.1.4-py3-none-any.whl |
|---|---|
| Size | 20.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d4105c7fb54fae06afbe8d589509f41937ad0b5a55b7a23b90d5346a1e9149e8
|
|
BLAKE2b-256 checksum How to use checksums |
9fe500d51b3c5d1b6e4053aa077a33d9887c4a9845489eed0268e1f0aa6604e8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.16
|