Skip to main content

pgl-studio

The PGL Studio MCP server — the Prometheus↔studio seam (P6). A small, stdlib-only, loopback-bound server that exposes the agentic gaming studio's production ground and its agent-playable game face to any consumer that speaks the descriptor contract: vet before trust, a pinned manifest hash, frozen effect classes, per-tool grants, fail-closed on drift.

The two numbers that print side by side

Package version Manifest pin (descriptor.json → manifestSha256)
0.1.1 5ff1091bf04286e83118098c5d305987b4c93462069dfc13bbce0ef4a8af2eb4

The package version versions this distribution. The manifest pin is the versioning law at runtime: a consumer registers the descriptor, vets the server (initialize + tools/list + ping), and pins the manifest hash; if the served manifest ever drifts from the pin, the server compiles unavailable — fail-closed, with the reason on the record. The same values are exposed programmatically from the installed package: pgl_studio.__version__ and pgl_studio.MANIFEST_SHA256.

The pin is recomputable, not just comparable (0.1.1). The compiler's canonicalization recipe ships inside the package:

python3 -m pgl_studio.manifest_check   # recompute + MATCH/MISMATCH

It recompiles the manifest from the installed server's own initialize + tools/list and the shipped descriptor's declared effects, hashes the canonical form, and compares against MANIFEST_SHA256. Drift-checking is a computation, not a comparison of copies.

Run

pip install pgl-studio
pgl-studio            # serves http://127.0.0.1:8791/rpc, GET /health

Configuration is env-only; no credentials are carried in any file — the consumer's descriptor names the bearer env var, never a value:

Env Default Meaning
PGL_MCP_PORT 8791 Loopback port
PGL_DONE_STATE house run-ops done-state path Production-ground receipt the ground tools read
PGL_RUNNER_CMD the studio tree's runner Episode command for ground_run_episode
PGL_WATCHDOG house run-ops watchdog Advisory verdict source for status tools
PGL_GAME_ADAPTER odt stub selects the deterministic in-memory game adapter

Tools (10, grant = all 10 in the vetted descriptor)

Ground ops: ground_run_episode (write-local), ground_run_status, ground_lane_status, kernel_gate_states (read-local). Game face (Olive Drive Transit): game_observe, game_legal_actions, game_verify, game_snapshot (read-local), game_act, game_reset (write-local). Typed state only — pixels never cross this face.

Dependency closure — measured, and the placed grant scoped

The import graph was measured, not assumed (Wisdom Council B2, Red Team cure, 2026-11-07). The artifact's tools/list is byte-identical to the vetted manifest — the pin binds the artifact's surface — but the backing machinery differs by tool:

The artifact alone serves: the protocol face itself (initialize / tools/list / ping, manifest self-consistency against the pin), the ground read tools whose backing files are env-pointed — ground_run_status, ground_lane_status (done-state via PGL_DONE_STATE; the watchdog verdict via PGL_WATCHDOG, degrading to UNAVAILABLE when unconfigured) — and, since 0.1.1, the game contract through the stub adapter: the adapter contract module (adapters/contract.py, the game face's one non-stdlib import) ships inside this package, so PGL_GAME_ADAPTER=stub exercises all six game_* tools deterministically from the bare artifact.

Tree placement required (the R10 seat beside the Prometheus core, where the studio tree exists):

Tools Closure beyond this package
ground_run_episode a runner command (PGL_RUNNER_CMD) in the tree
kernel_gate_states the runner module in-process: run_production_ground.py → kernel/, planner/
game_* live (OdtAdapter) the Node CDP sidecar (in-package) plus the game HTML (studio/olive-drive-transit/index.html, resolved tree-relative) and a Chromium

Decision, on the record: the game HTML is not shipped in this package — shipping it alone could not close the live game face (the adapter resolves it by tree path and needs a browser besides). The contract the game face is written against is shipped (0.1.1 cure: in 0.1.0 its absence broke even the stub from the artifact). The placed grant is scoped here: a bare pip install is the contract + ground-read + stub-game face; the full 10-tool live surface is the tree placement's. The descriptor remains the primary package form; pip carries it to machines, the skill-file kit carries it to agents, the MCP registry lists it for discovery, git keeps it forever.

Metadata

Release files for pgl-studio 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 pgl-studio 0.1.1
File Size Uploaded Provenance Actions
pgl_studio-0.1.1.tar.gz 20.1 kB Without provenance Details for pgl_studio-0.1.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for pgl-studio 0.1.1
File Interpreter ABI Platform Actions
pgl_studio-0.1.1-py3-none-any.whl Python 3 none any Details for pgl_studio-0.1.1-py3-none-any.whl

Total release size: 40.4 kB

Release files / pgl_studio-0.1.1.tar.gz

Download URL pgl_studio-0.1.1.tar.gz
Size 20.1 kB
Tags Source
SHA-256 checksum
How to use checksums
ea15e09143c0fb8cfe3b2884947f3da7ce0a4bdf6091ed0cb1596779743fd45d
BLAKE2b-256 checksum
How to use checksums
f3335cbb30d28593827d210fc4b2176c01cc779ec2c359c8f091d0b81ed4977c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

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

Download URL pgl_studio-0.1.1-py3-none-any.whl
Size 20.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0a2e8c37b6d3ab259971cd1b011255430854851ddc5ac12ad6e58d7f83dc2d7a
BLAKE2b-256 checksum
How to use checksums
1c6a73b118a56ceed9e7fabe19ae10bbdbec0e7634c74ae53a2f0c0bea89ead2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Security for pgl-studio 0.1.1

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files No provenance

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