Skip to main content

pptxgym

PyPI Python CI

pptxgym turns real PowerPoint decks into validated computer-use tasks. It selects suitable decks, proposes repair tasks, applies controlled damage, builds partial-reward evaluators, runs solvability and attack gates, and can publish the resulting task code and assets.

The default workflow runs on a Linux server. Hugging Face Jobs is an optional executor, not a requirement.

Modes

Mode Model structure Use it for
fast One owner writes proposal, recipe, and reconciliation; an independent sealed probe remains Normal scaling
full Independent specialists write proposal, recipe, reconciliation, and solvability evidence Maximum review independence
focused Fast structure plus balanced selection and hard recipe constraints for animation, equation, native chart, and effects tasks Filling capability gaps

focused is not a more expensive version of full. It is close to fast in model usage, but only accepts tasks in its assigned native feature family.

The model CLI is configured separately as a harness: claude or codex. Each pipeline stage can use a different model, effort, endpoint, and credential.

Agent Quick Start

Most coding agents read the repository's AGENTS.md automatically; CLAUDE.md forwards Claude Code to the same contract. The repository also ships a pptxgym-operator skill for setup, run, resume, and publish interviews under .agents/skills/, mirrored under .claude/skills/. Open this checkout in an agent and send:

Read AGENTS.md in full and help me set up pptxgym. Inspect the host and any
existing config first, then ask me only the missing decisions in small groups.
Do not ask me to paste secrets into chat. Show me the effective setup before
changing anything, run doctor after setup, and do not launch or publish until
I explicitly confirm it.

For a batch, ask the agent to inspect the existing setup and then collect deck count, mode, worker limits, executor, monitoring, and publish choices before it launches. Copyable prompts for setup, running, resume, and publish are in Agent Quick Start.

Manual Quick Start

Requirements: Linux, Python 3.10+, LibreOffice, Poppler, and either the Claude Code or Codex CLI. WPS is optional; without it the round-trip gap is recorded.

Install the released package. The corpus extra is required for the default Zenodo10K source:

curl -LsSf https://astral.sh/uv/install.sh | sh
uv tool install 'pptxgym[corpus]'
pptxgym --help

pip install 'pptxgym[corpus]' is also supported inside a virtual environment. On a bare Ubuntu host, clone the repository and review image/bootstrap.sh before running it as root. It installs system packages, WPS Office, Node, Claude Code, and Codex.

Authenticate the harness once on the host:

claude auth login # Claude harness
# or
codex login      # Codex harness

Create a local-first configuration and check it:

pptxgym setup --harness claude
pptxgym doctor
pptxgym harness list

Run ten decks. Publishing is disabled unless configured and requested.

pptxgym run --mode fast --count 10 --detach
pptxgym run-status runs/fast-<timestamp>
pptxgym logs runs/fast-<timestamp> --follow

Every run freezes its resolved settings in run.toml. Resume uses that snapshot and the existing stage fingerprints; it does not start completed decks from scratch.

pptxgym resume runs/fast-<timestamp> --detach
pptxgym verify runs/fast-<timestamp>

For development from a source checkout instead, use uv sync --extra dev --extra corpus and prefix commands with uv run.

Configuration

The default file is ~/.config/pptxgym/config.toml. Credentials live in a separate mode-0600 credentials.toml; API key values are never copied into the public config or a run snapshot.

Important sections:

  • execution: local or hf-jobs, work root, timeout, WPS policy.
  • concurrency: deck, probe, CPU, and selection worker pools.
  • source: Zenodo10K, a pinned manifest, or a local directory.
  • harnesses and connections: Claude/Codex CLIs and native/relay endpoints.
  • routes: owner, proposal, recipe, reconcile, and probe model assignments.
  • storage: local run state or a Hugging Face results dataset.
  • publish: rollout checkout/repository, asset dataset, ID series, and lists.

auto concurrency is deliberately conservative: it uses the selected harness's max_concurrency and never exceeds the deck count. Set a number for a measured limit or all to match the deck count explicitly.

See configuration and the files under configs/.

An installed wheel also carries the agent contract and operator workflow:

pptxgym guide agent
pptxgym guide operator

Sources

The default source is the license-filtered Zenodo10K flow and requires the corpus extra. Selection produces a pinned manifest and joins provenance by filename, not deck order.

For a local directory:

pptxgym setup --force --harness codex \
  --source-type local --source-path /data/decks
pptxgym run --mode fast --count 20

Publishing local decks additionally requires a JSON provenance manifest. This is a hard gate because task assets are redistributed. See source configuration.

Publishing

Publishing is opt-in and requires both a rollout target and an asset dataset. It allocates IDs through a registry, verifies uploaded bytes are fetchable, updates every configured task list, and commits the task files. A failed publish can be retried without model calls:

New asset datasets default to private; public visibility must be configured explicitly.

pptxgym publish runs/fast-<timestamp>
pptxgym verify runs/fast-<timestamp>

Only one publisher should update a registry at a time. Git pushes rebase and retry when another contributor moves the shared branch, but concurrent ID allocation against the same registry is intentionally unsupported.

Hugging Face Jobs

Set execution.executor = "hf-jobs", configure a writable results dataset and the source repository/revision, then use the same run, resume, logs, and publish commands. The launcher installs the runtime, checkpoints alternating archives, restores the newest valid archive, and records the submitted job ID.

See HF Jobs.

More

Individual stage commands such as ingest, propose, recipe, and harden remain available for debugging and targeted recovery. Most users should start with the managed commands above.

License

The source repository and PyPI package are publicly accessible, but the software is not open source. It is distributed under the proprietary terms in LICENSE; public visibility does not grant permission to use, copy, modify, or redistribute it.

Metadata

Release files for pptxgym 0.9.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 pptxgym 0.9.1
File Size Uploaded
pptxgym-0.9.1.tar.gz 906.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pptxgym 0.9.1
File Interpreter ABI Platform
pptxgym-0.9.1-py3-none-any.whl Python 3 none any Details

Total release size: 1.5 MB

Release files / pptxgym-0.9.1.tar.gz

Download URL pptxgym-0.9.1.tar.gz
Size 906.8 kB
Tags Source
SHA-256 checksum
How to use checksums
8dd865aab4f98a8cacb37972546da797361d6d1542a9e2e6cb3bdfbfebfde89e
BLAKE2b-256 checksum
How to use checksums
b9081e491fb8355b72511bf9229d7392b3ccd6643c599cb8501111d9e3d92d7a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 13, 2026.

Transparency log

Release files / pptxgym-0.9.1-py3-none-any.whl

Download URL pptxgym-0.9.1-py3-none-any.whl
Size 639.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d5e7b7184f06a706e8556d206c152ab67aa808db70c3465846454e65d5970789
BLAKE2b-256 checksum
How to use checksums
0ce9e4a1c960a73d6e8d636117467493077cb997dfa109703a7bd03a2299bb1e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 13, 2026.

Transparency log

Release history Release notifications | RSS feed

0.9.2

2 release files

This release

0.9.1 This release

2 release files

0.9.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