Skip to content

Pydantic AI as an agentic engine #50971

Description

@dsfaccini

hey guys! @strawgate brought agentic workflows to our attention a couple months ago and we've been
using them since then (https://github.com/pydantic/pydantic-ai/tree/main/.github/workflows, pydantic/pydantic-ai#7211, pydantic/pydantic-ai#7253 (review)).

in parallel we've been running our own handrolled agent that does triage and review in our repo pydantic/pydantic-ai#7235 (comment).

we like agentic workflows and want to keep using them, while also dogfooding our own stack, which
is why we want to build a Pydantic AI based engine pydantic/pydantic-ai-harness#569 following the third-party model in your https://github.github.io/gh-aw/reference/engines/

claude's helping me build it so I'll leave its description below, + some questions we have for you guys so we can make the right choices

thank you for your time and attention!


the shape. An owner-maintained engine definition (engine: {id: pydantic-ai, behaviors: ...})
published in pydantic-ai-harness and imported
pinned to a tag, backed by a headless coding-agent CLI installed via runtimes: {uv: {}} +
pre-agent-steps (the aider.md pattern), with secret-strategy: universal-llm-consumer for
auth. Nothing needs to live in your repo or binary -- users import the definition from ours.

built already (pydantic-ai-harness#569):
the engine definition and a smoke workflow, compile-tested:

  • a new pydantic-ai engine id imported from a shared definition compiles clean with --strict on
    v0.85.4. we bisected the releases: v0.84.3 still rejects new ids, the Refactoring opencode integration for shared workflows #50145 fix lands in v0.84.4.
    we'll document v0.85.4 as our minimum supported version.
  • cross-repo pinned imports (owner/repo/path.md@tag) resolve, SHA-pin, and vendor correctly --
    tag, branch, and bare-SHA refs all work.
  • one docs/UX note from testing: the bare-string form (engine: pydantic-ai) errors even when the
    definition is imported -- only the object form (engine: {id: pydantic-ai}) works, and the error
    message doesn't hint at that. cost us a minute; will cost every new user a minute.

being built now: the CLI itself. pydantic-ai-harness ships all the pieces a coding agent needs
(sandboxed filesystem + shell tools, repo context loading, planning, context compaction) but no
console entry point yet -- that's the gap we're closing, designed against your engine contract from
day one: prompt in, one-shot run, exit code out, MCP config consumed from the gateway so safe
outputs flow through the standard safeoutputs server.

three questions where your answers change what we build:

  1. install. behaviors.installation.package-manager values other than npm compile clean but
    silently emit no install step. we're fine on the pre-agent-steps path -- but a compile warning
    for non-npm values would save the next Python/Rust engine author a confusing afternoon. want an
    issue/PR for that?
  2. logs and metrics. behavior-defined engines get no log parser: no conversation rendering in
    the step summary, and gh aw logs / gh aw audit report zero tokens and turns (AI-credit
    accounting through the proxy still works). we get why -- GitHub Agentic Workflow Engine Enhancement Proposal #20416 scoped declarative log parsing
    out as a non-goal -- but that was before imported engines became the recommended route for third
    parties. is there appetite for a hook here, e.g. a documented streaming-JSONL schema plus
    parse_custom_log.cjs promoted to a real contract? we'd emit whatever schema you standardize,
    and we're happy to contribute the parser.
  3. discoverability. once our definition is live and smoke-tested, would you take a link to it
    from the third-party agent guide?
    not asking for a row in the engines table or any support commitment from you -- just a pointer
    for people searching "how do I run X on gh-aw".

whatever shape this takes, we intend to maintain it long-term -- so if any assumption above looks
wrong, tell us now and we'll adjust before we ship :)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions