
Security News
Open Source Maintainers Feeling the Weight of the EU’s Cyber Resilience Act
The EU Cyber Resilience Act is prompting compliance requests that open source maintainers may not be obligated or equipped to handle.
Pygent is a minimalist coding assistant that runs commands in a Docker container when available and falls back to local execution.
Pygent is a coding assistant that executes each request inside an isolated Docker container (meaning the container is discarded after use) whenever possible. If Docker is unavailable (for instance on some Windows setups) the commands are executed locally instead. Full documentation is available in the docs/
directory and at pygent-ai.com.
python:3.12-slim
).PYGENT_WORKSPACE
.pygent ui
(also available as pygent-ui
).config.py
script on startup for advanced configuration.bash
tool to run shell commands in a sandboxed environment.The recommended way to install Pygent is using pip:
pip install pygent
To include optional features like Docker support or the web UI, you can specify extras:
pip install pygent[docker,ui]
Python ≥ 3.9 is required. The package now bundles the openai
client for model access.
To run commands in Docker containers, Docker must be installed separately.
If you are a developer or want the latest unreleased changes, you can install from source:
pip install -e .
Python ≥ 3.9 is required. The package now bundles the openai
client for model access.
To run commands in Docker containers, Docker must be installed separately. If installing from source, you can include Docker support with pip install -e .[docker]
.
Behaviour can be adjusted via environment variables (see docs/configuration.md
for a complete list):
OPENAI_API_KEY
– key used to access the OpenAI API.
Set this to your API key or a key from any compatible provider.OPENAI_BASE_URL
– base URL for OpenAI-compatible APIs
(defaults to https://api.openai.com/v1
).PYGENT_MODEL
– model name used for requests (default gpt-4.1-mini
).PYGENT_IMAGE
– Docker image to create the container (default python:3.12-slim
).PYGENT_USE_DOCKER
– set to 0
to disable Docker and run locally.PYGENT_MAX_TASKS
– maximum number of concurrent delegated tasks (default 3
).Settings can also be read from a pygent.toml
file. See
examples/sample_config.toml
and the accompanying
config_file_example.py
script for a working demonstration that generates tests using a delegated agent.
After installing run:
pygent
Use --docker
to run commands inside a container (requires
pygent[docker]
). Use --no-docker
or set PYGENT_USE_DOCKER=0
to force local execution. When the session starts the CLI shows the
persona name and whether it is running locally or in Docker so you
can easily tell which agent is active.
Pass --confirm-bash
if you want to approve each bash command before it runs.
Use --ban-cmd CMD
to disallow specific commands entirely (repeat to ban multiple).
Pass --config path/to/pygent.toml
to load settings from a file.
Use --cwd
to run inside the current directory instead of a temporary workspace.
Type messages normally; use /exit
to end the session. Each command is executed
in the container and the result shown in the terminal.
Interactive programs that expect input (e.g. running python
without a script)
are not supported and will exit immediately.
For a minimal web interface run pygent ui
instead (requires pygent[ui]
).
Use /help
for a list of built-in commands or /help <cmd>
for details.
Use /save DIR
to snapshot the current environment for later use.
Use /tools
to enable or disable tools during the session.
Use /banned
to list or update banned commands.
Use /confirm-bash on|off
to toggle confirmation before running bash commands.
Resume from a snapshot with pygent --load DIR
or by setting
PYGENT_SNAPSHOT=DIR
.
Additional commands can be registered programmatically with
pygent.commands.register_command()
.
The CLI loads a config.py
script if present (or passed with --pyconfig
)
and environment variables may be set directly with -e NAME=value
.
You can also interact directly with the Python code:
from pygent import Agent
ag = Agent()
ag.step("echo 'Hello World'")
# ... more steps
ag.runtime.cleanup()
See the examples folder for more complete scripts. Models can be swapped by
passing an object implementing the Model
interface when creating the
Agent
. The default uses an OpenAI-compatible API, but custom models are
easy to plug in. They can also trigger tools by returning a message with
tool_calls
as demonstrated in examples/custom_model_with_tool.py
.
Custom models can also be configured globally:
from pygent.models import set_custom_model
set_custom_model(MyModel())
All new agents and delegated tasks will use this model unless another one is passed explicitly.
You can also override how the assistant builds the system prompt:
from pygent.agent import set_system_message_builder
def my_builder(persona, disabled_tools=None):
return f"{persona.name}: ready to work"
set_system_message_builder(my_builder)
Passing None
restores the default prompt generation.
Set your OpenAI key:
export OPENAI_API_KEY="sk-..."
To use a different provider, set OPENAI_BASE_URL
to the provider
endpoint and keep OPENAI_API_KEY
pointing to the correct key:
export OPENAI_BASE_URL="https://openrouter.ai/api/v1"
export OPENAI_API_KEY="your-provider-key"
pip install -e .[test]
pytest
Use mkdocs serve
to build the documentation locally and serve it on a local webserver.
This project is released under the MIT license. See the LICENSE
file for details.
FAQs
Pygent is a minimalist coding assistant that runs commands in a Docker container when available and falls back to local execution.
We found that pygent demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
The EU Cyber Resilience Act is prompting compliance requests that open source maintainers may not be obligated or equipped to handle.
Security News
Crates.io adds Trusted Publishing support, enabling secure GitHub Actions-based crate releases without long-lived API tokens.
Research
/Security News
Undocumented protestware found in 28 npm packages disrupts UI for Russian-language users visiting Russian and Belarusian domains.