Como usar
- Copie o comando e verifique o pacote antes de instalar no seu ambiente de agente.
- Consulte no original as ferramentas, credenciais e ambientes necessários.
- Descreva os dados de entrada e a entrega esperada; confira a saída com as fontes.
npx skills add https://github.com/k-dense-ai/scientific-agent-skills --skill pufferlibAntes de começar
- A instalação não inclui assinatura de modelo, franquia API ou acesso aos seus arquivos.
- Estrelas e instalações indicam atividade, não um teste independente de qualidade ou segurança.
Renderizado do repositório de origem, preservando títulos, exemplos, código, tabelas, links e imagens.
PufferLib
Choose the version before choosing an API. Reviewed 2026-10-01:
| Profile | Status | Main use |
|---|---|---|
Native source 5.0 | Current default branch and live documentation | C/CUDA environments, native trainer; CPU evaluation only |
pufferlib==3.0.0 | Latest PyPI release, published 2025-06-23; sdist only | Python/Gymnasium/PettingZoo adaptation and Torch PuffeRL |
Pinned source 4.0 | Historical snapshot | C Ocean interface with an optional Torch fallback |
For 5.0, read references/native-5.md. The reviewed revision is 6ffa5b10dbbbe4d1e8288367c7d9d3acd3bad4a2. Its CLI is ./puffer train after building an environment, not puffer train ENV_NAME. There is no 5.0 Python emulation/vector API or --slowly fallback.
The bundled plan schema deliberately supports only 3.0 and pinned 4.0; it does not launch training. All native/PufferLib training examples are source-reviewed, illustrative, and not executed in this review. Bundled synthetic checks are executed CPU tests, not evidence of PufferLib installation or learning quality. The PyPI sdist was hash-verified and its Python sources inspected; the moving 3.0 branch differs, including its load_policy and logger contracts.
Safe defaults
- Start with bundled synthetic, CPU-only, network-free tools.
- Do not import an arbitrary environment by dotted path. Bundled tools accept
only allowlisted built-ins and slug identifiers.
- Do not install or execute an unreviewed environment package, native
extension, ROM, map, checkpoint, or pickle file.
- Verify official source, immutable revision, licenses, checksums or
attestations, and build hooks. Sandbox native builds and first execution.
- Cap steps, environments, agents, workers, threads, buffers, memory, disk,
render size, and wall time.
- Keep training and evaluation environments/seeds separate.
- Default logging to local/none. External logging requires explicit opt-in,
disclosure acknowledgment, and separate artifact-upload approval.
- Never pass W&B or Neptune credentials via CLI, INI, JSON, tags, run names, or
logger configuration. Never print them.
- Never dump all environment variables or recursively search for
.env. - Hash checkpoint bytes before trusted, sandboxed loading; metadata inspection
is not proof of safety.
First local checks
All bundled CLIs are dependency-free and emit strict JSON:
python3 scripts/env_template.py --help
python3 scripts/env_contract_validator.py
python3 scripts/benchmark_vectorization.py --backend serial
python3 scripts/train_template.py
python3 scripts/validate_plan.py
python3 scripts/repro_plan.pyDefaults are synthetic, deterministic, bounded, local, CPU-only, no-network, and dry-run where training would otherwise occur.
Installation and provenance
Published 3.0.0
PyPI supplies only pufferlib-3.0.0.tar.gz:
sha256: 7df3a3e3f5f894d78d2a1f5374097890aec01473183e748abefe4f3faa10eaa9
Requires-Python: >=3.9After source/build review, create a pinned uv project:
uv venv --python 3.11
uv add --exact --no-sync "pufferlib==3.0.0"
uv lock
uv sync --frozenThese installation commands are illustrative and were not executed. Commit pyproject.toml and uv.lock; verify the archive digest and every resolved dependency. The source build can compile native code and fetch build assets, so resolve/build in a sandbox without credentials or sensitive mounts. The archive declares NumPy <2, Gymnasium <=0.29.1, and PettingZoo <=1.24.1; latest Gymnasium/NumPy are not valid substitutes for this profile. Its setup supports Linux/macOS and rejects other systems. Python classifiers alone do not establish a successful native build. The uploaded metadata does not pin Torch or CUDA; do not claim a supported CUDA matrix that PyPI does not declare.
Pinned 4.0 source
The reviewed branch head on 2026-07-23 was:
25647630e1b15330bb3153a5a0d3ff8d234c3acfPin the commit, not branch 4.0:
uv add --no-sync \
"pufferlib @ git+https://github.com/PufferAI/PufferLib.git@25647630e1b15330bb3153a5a0d3ff8d234c3acf"
uv lockThe reviewed 4.0 package declares Python >=3.10 and Torch >=2.9. The reviewed PufferTank snapshot uses Ubuntu 24.04, Python 3.12, and an NVIDIA CUDA 13.0.2/cuDNN development image with the cu130 Torch index, but does not pin the exact Torch wheel or all system packages. Treat it as a reference, not a complete lock. Never execute a remote installer directly from a pipe.
Read references/training.md before any installation or build.
Environment workflow
1. Validate the contract
Gymnasium reset returns (observation, info). Step returns:
(observation, reward, terminated, truncated, info)Validate spaces, shapes, dtypes, finite rewards, booleans, reset-before-step, reset-after-end, seeding, and cleanup. terminated is an MDP terminal; truncated is an external cutoff such as a time limit. Preserve the distinction for bootstrapping and metrics. Both flags can be true in general Gymnasium. Check autoreset timing and retain the final pre-reset observation; do not bootstrap from the next episode. The 3.0 trainer has unresolved truncation and inactive-agent mask handling, described in references/training.md.
python3 scripts/env_contract_validator.py \
--steps 64 --episodes 8 --seed 422. Adapt only after review
Published 3.0 uses explicit wrappers:
import pufferlib.emulation
wrapped = pufferlib.emulation.GymnasiumPufferEnv(reviewed_gymnasium_instance)For a reviewed PettingZoo Parallel environment:
wrapped = pufferlib.emulation.PettingZooPufferEnv(reviewed_parallel_instance)There is no supported 3.0 pufferlib.emulate(...) shortcut matching the old skill. Read references/environments.md and references/integration.md.
3. Native environments
Published 3.0 PufferEnv requires single_observation_space, single_action_space, and num_agents before super().__init__(buf). It uses in-place vector buffers and returns separate terminal/truncation arrays plus a list of info dictionaries.
The reviewed 4.0 source uses C bindings. Start from upstream ocean/squared (single-agent) or ocean/target (multi-agent), build one environment in local/sanitized mode, and verify every buffer size/type/index before optimization.
Vectorization workflow
Published 3.0:
import pufferlib.vector
vecenv = pufferlib.vector.make(
reviewed_creator,
backend=pufferlib.vector.Serial,
num_envs=4,
seed=42,
)Move to Multiprocessing only after serial traces pass. Record num_envs, num_workers, batch_size, zero-copy mode, start method, agent count, masks, and actual returned shapes. For multi-agent environments, batch length is based on agent slots, not necessarily num_envs.
The reviewed 4.0 config instead uses:
[vec]
total_agents = 4096
num_buffers = 2
num_threads = 16Read references/vectorization.md. Benchmark fixed work with warmup and at least three repeats; report simulation and end-to-end training SPS separately. The bundled benchmark measures only its synthetic harness.
Policy workflow
Published 3.0 policies are Torch modules sized from single_observation_space/single_action_space. Stable recurrent composition uses encode_observations and decode_actions; structured emulation uses pufferlib.pytorch.nativize_dtype and nativize_tensor.
The reviewed 4.0 Torch fallback composes:
pufferlib.models.Policy(encoder=encoder, decoder=decoder, network=network)It provides MLP, MinGRU, LSTM, and GRU network choices; --slowly selects this fallback instead of the native backend. Check output/state shapes, masks, finite values, gradients, and eager-versus-compiled behavior. See references/policies.md.
Training and evaluation
Published 3.0 trainer import:
from pufferlib import pufferl
# train_config must include the environment name for checkpoint naming.
trainer = pufferl.PuffeRL(train_config, vecenv, policy)Reviewed 4.0 CLI:
puffer train ENV_NAME
puffer eval ENV_NAME --load-model-path EXACT_TRUSTED_PATH
puffer sweep ENV_NAMEGenerate a plan instead of launching by default:
python3 scripts/train_template.py \
--profile pypi-3.0.0 \
--environment synthetic \
--device cpu \
--total-timesteps 10000train_template.py emits a report envelope, not a bare plan. Its plan member is the input to validate_plan.py; passing the whole report is invalid. For the synthetic environment, command_preview is an empty list because there is no upstream training command to launch. To save and revalidate:
python3 scripts/train_template.py > training-report.json
python3 -c 'import json; r=json.load(open("training-report.json")); print(json.dumps(r["plan"], allow_nan=False, indent=2))' > plan.json
python3 scripts/validate_plan.py --root . --config plan.jsonThe handoff consists of the training report, extracted plan and validation report. A command preview exists only for a reviewed non-synthetic environment and remains partial until its environment-specific settings are resolved.
Validate a custom strict-JSON plan using the same bare-plan format:
python3 scripts/validate_plan.py --root . --config plan.jsonThe schema rejects secret-bearing keys, unbounded resources, dotted environment paths, invalid vector divisibility, mixed-version options, and coupled train/eval seeds. See references/training.md.
Logging
PufferLib 3.0 contains historical W&B and Neptune integrations; pinned 4.0 contains W&B. Neptune shut down on 2026-03-05 and the bundled planner rejects it. Native 5.0 uses local logs/Constellation and has no reviewed W&B or Neptune CLI flag. W&B remains an optional external service. It may transmit configuration, metrics, source metadata, hardware telemetry, output, and approved artifacts, with privacy, retention, access-control, and cost implications.
- W&B credential: named environment variable
WANDB_API_KEY. - Historical Neptune token name:
NEPTUNE_API_TOKEN; do not configure new runs. - Never put values in arguments/config/logs.
- Sanitize config keys before logging.
- Keep source/model upload off unless explicitly approved.
The reviewed 3.0 sdist and pinned 4.0 W&B training paths upload a model on completion. The 3.0 sdist has no --no-model-upload flag. The planner therefore requires explicit artifact opt-in as well as logging opt-in:
python3 scripts/train_template.py \
--logger wandb \
--enable-external-logging \
--acknowledge-external-disclosure \
--upload-checkpointsIt reports only the required variable name and never reads its value.
Checkpoint workflow
PufferLib 3.0 and the 4.0 Torch fallback use Torch serialization; the reviewed native 4.0 source writes opaque .bin weights. PyTorch warns that untrusted models are programs and that torch.load uses unpickling.
python3 scripts/inspect_checkpoint.py checkpoint.pt \
--root . \
--expected-sha256 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdefThe inspector hashes and classifies only. It does not call torch.load, import pickle/Torch, inspect archive members, or extract files. Verify source, license, architecture, environment revision, sidecar metadata, and checksum before any sandboxed load. Never use latest in a reproducible evaluation.
Bundled files
Scripts
scripts/env_template.py— deterministic synthetic Gymnasium-style template.scripts/env_contract_validator.py— bounded contract and seed checks.scripts/benchmark_vectorization.py— capped serial/spawn synthetic benchmark.scripts/train_template.py— non-executing 3.0/4.0 training-plan generator.scripts/validate_plan.py— strict config/resource/security validator.scripts/inspect_checkpoint.py— metadata/hash inspection without deserialization.scripts/repro_plan.py— separate-seed evaluation and benchmark plan.
References
references/native-5.md— current native build, environment, trainer and evaluation contracts.references/environments.md— Gymnasium, stable PufferEnv, emulation, native C.references/vectorization.md— backends, shapes, start methods, benchmarks.references/policies.md— version-specific policy contracts and state safety.references/training.md— installs, config, CLI, PuffeRL, eval, logs, checkpoints.references/integration.md— migration matrix, third-party and credential safety.
Dated upstream sources
- Neptune shutdown notice — service discontinued
2026-03-05; checked 2026-10-01.
- Current 5.0 source/CLI evidence is linked in
references/native-5.md.
released 2025-06-23; checked 2026-07-23.
digest/dependencies and archive contents; rechecked 2026-10-01.
- PufferLib official docs — checked 2026-10-01; implementation details pinned in
references/native-5.md. - PufferLib source — source history and
implementation; checked 2026-07-23.
— CUDA/Python reference; checked 2026-07-23.
Reinforcement Learning Journal, 2025; use only for its stated benchmarks.
submitted 2024-06-11; describes an earlier API/performance profile.
Citing Scientific Agent Skills
This skill is part of Scientific Agent Skills by K-Dense. If it materially contributed to a manuscript, report, presentation, or code release, add the paper to the references or software section and tell the user you did so:
Kassis, T., Agarwal, V., He, Y., Patel, D., & Brueckner, A. M. (2026). Scientific Agent Skills: A Library of Procedural Knowledge for Research Agents. arXiv:2609.00065. https://doi.org/10.48550/arXiv.2609.00065
Always cite the current version. The DOI and https://arxiv.org/abs/2609.00065 resolve to the latest arXiv version, so never append a version suffix such as v1. When network access is available, fetch https://arxiv.org/abs/2609.00065 (or http://export.arxiv.org/api/query?id_list=2609.00065) before writing the reference and take the author list, year, and version from that record. If the record lists a journal reference or publisher DOI, cite the published version instead.

