Skip to content

Latest commit

 

History

History

pydantic-ai

Folders and files

README.md

dex-agents-pydantic-ai-cli

dex-agents-pydantic-ai-cli provides the dex-agents-pydantic-ai command. It runs a Pydantic AI agent as a durable Dex agent session and chats with it in your terminal. The shared CLI core, dex-agents-cli-core, starts or reuses dexcli dev, connects the connectors MCP server, and runs the Worker. This package only builds the agent with the Pydantic AI adapter.

Running it

The command needs Python 3.11 or later and a key for the model's provider:

export OPENAI_API_KEY=sk-...
uvx --from dex-agents-pydantic-ai-cli dex-agents-pydantic-ai

The first run asks the init questions and writes ~/.dex/agents/pydantic-ai.yaml. Then type a message at the > prompt. Approve or reject tool calls with y or n, and press Ctrl-D to exit. The session stays in Dex, and the command prints the --resume line that continues it. See the CLI core README for every subcommand and option, and agents/cli for the configuration file.

The provider reads its key from its standard environment variable. The package includes the OpenAI, Anthropic, and Google providers:

Model prefix Environment variables
openai: OPENAI_API_KEY; OPENAI_BASE_URL for another endpoint
anthropic: ANTHROPIC_API_KEY; ANTHROPIC_BASE_URL for another endpoint
google-gla: GOOGLE_API_KEY

The command never prints or stores a key.

Configuration

The model defaults to openai:gpt-5.2; set model in the file or pass --model to change it. It is a Pydantic AI model name, <provider>:<model>, such as anthropic:claude-opus-5-5. A session's settings may change the model and the instructions; each model call uses the values of its turn. system_prompt replaces the default instructions. The pydantic_ai section has no options yet, and any key in it is a configuration error.

Tools

The agent's tools are the CLI core's: its local tool source and the connector tools of the connectors MCP server. Every call runs in its own Dex tool Step, with the CLI core's policy. Reads run at once, file writes and shell commands wait for approval unless the shell allow list has the command, and the file tools stay in the workspace. See the CLI core README for the local tools.

Images

/image <path> attaches an image file to the next message. The command gives the Pydantic AI adapter the media store of media.store, so the model sees the image, and images that tools return go to the same store. See Images.

Development

Develop with uv 0.12.2. The package resolves dex-agents, the adapter, the CLI core, and the shared test support from this repository by path. uv.lock pins pydantic-ai-slim to the version the adapter's lock pins, and ci.sh checks that. ci.sh installs the locked dependencies, checks lint and types, and runs the tests against a private dexcli dev:

cd agents/cli/python/pydantic-ai
DEXCLI=/path/to/dexcli ./ci.sh

The tests run the command in a pseudo-terminal with a private home and an allow-listed environment. Pydantic AI's OpenAI provider calls the scripted Responses API of ../testing; a refused proxy stops any other request. A fake connectors MCP server serves a connector read and write. The tests cover a chat turn and --resume, read_file without approval and write_file after approval, a connector read and an approved connector write that runs once, session settings that change the model, and a key in the pydantic_ai section. They also cover a system_prompt set in the session settings, which reaches the next model request, and a rejected file write and connector write, which never run.