feat: add agentic-api Python distribution - #201
Open
franciscojavierarceo wants to merge 20 commits into
Open
Conversation
franciscojavierarceo
requested review from
bbrowning,
jiahuei,
leseb,
maralbahari,
noobHappylife,
qandrew and
tjtanaa
as code owners
August 24, 2026 07:05
franciscojavierarceo
force-pushed
the
codex/agentic-api-python-0.4.0
branch
from
August 24, 2026 12:21
dd23b29 to
5889852
Compare
Add the lightweight agentic-api Python package and CLI for the 0.4.0 build-only release. The package supervises the Rust server and optional local vLLM process, exposes diagnostics and version commands, and ships the cross-platform wheel and release validation workflow while preserving the existing Rust CLI. Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>
Install the Rust components required by the repository toolchain during wheel builds and keep the cross-platform process test from mutating os.name globally, which was breaking pytest pathlib cleanup on Linux. Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>
Add standard version and machine-readable doctor commands, return actionable errors for missing binaries, reject malformed or credential-bearing upstream URLs, document the local vLLM extra, and exercise source installation through the end-to-end test. Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>
Keep Cargo registry caches for Python wheel jobs but do not restore or save the large compiled target directory across Python matrix entries. Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>
Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>
franciscojavierarceo
force-pushed
the
codex/agentic-api-python-0.4.0
branch
from
August 26, 2026 11:24
c02885a to
5a3db2d
Compare
Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>
Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>
Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>
Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>
Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>
Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>
Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>
Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>
Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>
Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>
Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>
Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>
Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>
There was a problem hiding this comment.
Pull request overview
Adds the build-only 0.5.0 Python distribution around the existing Rust gateway.
Changes:
- Adds Python CLI, diagnostics, supervision, and packaged binary discovery.
- Adds wheel build, validation, release workflows, and extensive tests.
- Documents artifact installation and local/remote operation.
Reviewed changes
Copilot reviewed 34 out of 34 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
pyproject.toml |
Defines Maturin package metadata. |
python-build-constraints.txt |
Pins Python build tools. |
python/agentic_api/__init__.py |
Exposes the package version. |
python/agentic_api/__main__.py |
Adds module execution support. |
python/agentic_api/binary.py |
Discovers packaged executables. |
python/agentic_api/cli.py |
Implements CLI parsing and validation. |
python/agentic_api/compatibility.py |
Pins supported vLLM version. |
python/agentic_api/diagnostics.py |
Implements doctor diagnostics. |
python/agentic_api/launcher.py |
Launches local or remote mode. |
python/agentic_api/process.py |
Supervises child processes. |
python/agentic_api/version.py |
Generates version reports. |
python/agentic_api.data/scripts/agentic-api |
Provides the packaged entry point. |
scripts/check-python-wheel.sh |
Validates wheel contents and installation. |
scripts/validate-python-release-version.sh |
Enforces the build-only version gate. |
scripts/tests/agentic-cli-e2e-test.py |
Adds source-install CLI coverage. |
tests/python/test_binary.py |
Tests executable discovery. |
tests/python/test_cli.py |
Tests CLI validation and dispatch. |
tests/python/test_diagnostics.py |
Tests diagnostic reporting. |
tests/python/test_docs_examples.py |
Validates documented commands. |
tests/python/test_installed_cli.py |
Tests installed-wheel commands. |
tests/python/test_launcher.py |
Tests launcher behavior. |
tests/python/test_metadata.py |
Validates package metadata. |
tests/python/test_process.py |
Tests supervision and readiness. |
tests/python/test_release_version.py |
Tests release constraints. |
tests/python/test_version.py |
Tests version reporting. |
tests/python/test_wheel_check.py |
Tests wheel validation rules. |
.github/workflows/python.yml |
Adds Python wheel CI. |
.github/workflows/release-python.yml |
Adds build-only release artifacts. |
crates/agentic-server/src/main.rs |
Enables Rust server version output. |
crates/agentic-server/tests/cli_test.rs |
Tests packaged Rust CLIs. |
README.md |
Documents Python distribution usage. |
docs/index.md |
Links Python installation guidance. |
docs/guides/python-installation.md |
Adds installation and workflow guide. |
AGENTS.md |
Updates repository and testing guidance. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Comment on lines
+66
to
+68
| def _run_local_mode(supervisor: ProcessSupervisor, options: ServeOptions) -> ChildResult: | ||
| if options.model is None: | ||
| raise ValueError("--model is required in local mode") |
| - "python/**" | ||
| - "scripts/check-python-wheel.sh" | ||
| - "scripts/validate-python-release-version.sh" | ||
| - "tests/python/**" |
| - "python/**" | ||
| - "scripts/check-python-wheel.sh" | ||
| - "scripts/validate-python-release-version.sh" | ||
| - "tests/python/**" |
Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>
maralbahari
approved these changes
Aug 28, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Add the lightweight
agentic-apiPython distribution for the 0.5.0 build-only release, while retaining the existing Rust crates and CLI as the implementation core.What this adds
agentic-apiCLI.serve,doctor, andversioncommands with model/base-URL validation and safe Rust CLI passthrough.This package does not add vLLM, PyTorch, CUDA, or ROCm payloads to the wheel. The optional local runtime dependency is isolated behind the
localextra and remains pinned for reproducibility.Release boundary
Version 0.5.0 builds and validates wheel artifacts in CI but does not publish to PyPI yet. PyPI publication and the public
uvx pip install agentic-apiworkflow are deferred until supported Linux runtime/device validation is complete.Test Plan
cargo test --workspacecargo fmt --all -- --checkcargo clippy --all-targets -- -D warningsuv run --python 3.12 --with maturin==1.14.1 --with pytest==9.1.1 python -m pytest tests/python -qpython3 scripts/tests/agentic-cli-e2e-test.pygit diff --check