From ca44cc0569c1920ec2b31a410cf413f8186bfd57 Mon Sep 17 00:00:00 2001 From: Yash Kumar Date: Fri, 26 Jun 2026 14:10:00 +0530 Subject: [PATCH 1/6] docs: add user help documentation --- docs/help/cli_reference.md | 19 +++++++++++++++++++ docs/help/quick_start.md | 27 +++++++++++++++++++++++++++ docs/help/troubleshooting.md | 24 ++++++++++++++++++++++++ 3 files changed, 70 insertions(+) create mode 100644 docs/help/cli_reference.md create mode 100644 docs/help/quick_start.md create mode 100644 docs/help/troubleshooting.md diff --git a/docs/help/cli_reference.md b/docs/help/cli_reference.md new file mode 100644 index 0000000..c91bfda --- /dev/null +++ b/docs/help/cli_reference.md @@ -0,0 +1,19 @@ +# CLI Reference + +The AutoWeave CLI is the primary way to interact with the orchestration engine locally. You can access it by running `autoweave` or `uv run autoweave`. + +## Commands + +- `autoweave status`: Show a minimal repository status summary. +- `autoweave validate`: Validate docs, configs, and sample agent fixtures. +- `autoweave bootstrap`: Create missing sample agents and config fixtures. +- `autoweave migrate-project`: Refresh packaged AutoWeave project-managed files to the latest library templates. +- `autoweave create-agent`: Create a new agent bundle with soul, playbook, config, and skills. +- `autoweave doctor`: Inspect local env, configs, and the OpenHands bootstrap path. +- `autoweave run-example`: Run the notifications example against the composed local runtime. +- `autoweave run-workflow`: Run the current workflow from a user request instead of the fixed sample brief. +- `autoweave worker`: Run a real Celery worker for queued AutoWeave workflow execution. +- `autoweave ui`: Launch the lightweight local monitoring UI. +- `autoweave start`: Start the entire local execution environment: UI and Celery worker. +- `autoweave cleanup-local-state`: Purge stale canonical runs and local generated runtime residue. +- `autoweave new-project`: Initialize a new AutoWeave project. diff --git a/docs/help/quick_start.md b/docs/help/quick_start.md new file mode 100644 index 0000000..31f81ac --- /dev/null +++ b/docs/help/quick_start.md @@ -0,0 +1,27 @@ +# Quick Start + +Welcome to AutoWeave! This guide will help you get your first agent workflow running locally. + +## 1. Initialization +First, initialize a new AutoWeave project in a fresh directory: +```bash +autoweave new-project +``` + +## 2. Bootstrapping +Create the required agent configurations and bootstrap the local environment: +```bash +autoweave bootstrap +``` + +## 3. Starting the Control Plane +Start the AutoWeave UI and Celery worker using the `start` command. This will spin up the local dashboard on `http://127.0.0.1:8766`: +```bash +autoweave start +``` + +## 4. Running a Workflow +To execute a workflow, you can either trigger a pre-configured example or run a custom workflow: +```bash +autoweave run-example +``` diff --git a/docs/help/troubleshooting.md b/docs/help/troubleshooting.md new file mode 100644 index 0000000..1f13959 --- /dev/null +++ b/docs/help/troubleshooting.md @@ -0,0 +1,24 @@ +# Troubleshooting + +Common issues and their resolutions when operating AutoWeave. + +## Database Locks (SQLite) +If you see "database is locked" errors, it usually means the Celery worker and the UI server are competing for database writes. +**Solution:** Stop both processes and restart them cleanly using `autoweave start`. + +## Missing OpenHands Runtime +If `autoweave doctor` reports a missing OpenHands bootstrap path, ensure you have correctly installed the required Docker dependencies or pulled the latest OpenHands image. + +## Stale Runs Showing in Dashboard +If the UI dashboard is showing stale runs or incomplete executions that are no longer active in the Celery queue: +**Solution:** Run the cleanup command to purge stale state: +```bash +autoweave cleanup-local-state +``` + +## UI Fails to Bind Port +If starting the UI throws an "Address already in use" error for port 8766: +**Solution:** Kill any existing processes bound to that port: +```bash +kill -9 $(lsof -t -i :8766) +``` From 54f376375eb69911b58cf0c64e772ce5b0b9aeb7 Mon Sep 17 00:00:00 2001 From: Yash Kumar Date: Fri, 26 Jun 2026 14:10:29 +0530 Subject: [PATCH 2/6] feat(ui): integrate help docs into dashboard --- autoweave/monitoring/dashboard_page.py | 109 ++++++++++++++++++++----- 1 file changed, 88 insertions(+), 21 deletions(-) diff --git a/autoweave/monitoring/dashboard_page.py b/autoweave/monitoring/dashboard_page.py index 0c4775a..97969a2 100644 --- a/autoweave/monitoring/dashboard_page.py +++ b/autoweave/monitoring/dashboard_page.py @@ -878,12 +878,16 @@ def render_dashboard_page() -> str:
Documentation
-
@@ -1054,8 +1058,7 @@ def render_dashboard_page() -> str: /* --- Content Store --- */ const docs = { - 'ARCHITECTURE': ` -# AutoWeave High-Level Architecture + 'ARCHITECTURE': `# AutoWeave High-Level Architecture Version: 2.0 Status: frozen architecture baseline @@ -1183,10 +1186,8 @@ def render_dashboard_page() -> str: G -->|miss| R[Redis] R -->|miss| M[Typed miss / escalate] \`\`\` - - `, - 'DEPLOYMENT': ` -# Deployment Guide +`, + 'DEPLOYMENT': `# Deployment Guide AutoWeave Library is designed to be embedded into applications, but it requires several backing services to operate reliably in a production or local development environment. @@ -1236,10 +1237,8 @@ def render_dashboard_page() -> str: ### 5. Secrets Management - Do not hardcode credentials in \`.env\` files for production. - Inject \`VERTEXAI_SERVICE_ACCOUNT_FILE\`, \`POSTGRES_URL\`, and other secrets via a secrets manager (e.g., HashiCorp Vault, AWS Secrets Manager, Kubernetes Secrets). - - `, - 'autoweave_diagrams_source': ` -# AutoWeave Diagrams Source +`, + 'autoweave_diagrams_source': `# AutoWeave Diagrams Source Version: 2.0 Purpose: text-first diagrams for coding agents and PDF generation. @@ -1486,10 +1485,8 @@ class StorageUnitOfWork O->>DB: finalize attempt state O->>RD: release lease \`\`\` - - `, - 'autoweave_high_level_architecture': ` -# AutoWeave High-Level Architecture +`, + 'autoweave_high_level_architecture': `# AutoWeave High-Level Architecture Version: 2.0 Status: frozen architecture baseline @@ -2177,10 +2174,8 @@ class StorageUnitOfWork ## 17. Final architecture conclusion AutoWeave should be implemented as a **Vertex-AI-backed multi-agent control plane** on top of **OpenHands remote workers**, with **Postgres as truth**, **Redis/Celery as coordination**, **Neo4j as graph retrieval/projection**, **isolated worktrees per attempt**, **dynamic DAG scheduling**, and **normalized observability export** for the main product. - - `, - 'autoweave_implementation_spec': ` -# AutoWeave Implementation Specification +`, + 'autoweave_implementation_spec': `# AutoWeave Implementation Specification Version: 2.0 Status: implementation baseline @@ -3329,8 +3324,80 @@ class StorageUnitOfWork ## 20. Final implementation conclusion Build AutoWeave as a **Vertex-AI-backed, OpenHands-powered multi-agent orchestration library** with **canonical Postgres truth**, **Redis coordination**, **Neo4j graph projection/retrieval**, **worker-isolated worktrees**, **typed context and artifact services**, and **library-owned observability export**. +`, + 'help_cli_reference': `# CLI Reference + +The AutoWeave CLI is the primary way to interact with the orchestration engine locally. You can access it by running \`autoweave\` or \`uv run autoweave\`. + +## Commands + +- \`autoweave status\`: Show a minimal repository status summary. +- \`autoweave validate\`: Validate docs, configs, and sample agent fixtures. +- \`autoweave bootstrap\`: Create missing sample agents and config fixtures. +- \`autoweave migrate-project\`: Refresh packaged AutoWeave project-managed files to the latest library templates. +- \`autoweave create-agent\`: Create a new agent bundle with soul, playbook, config, and skills. +- \`autoweave doctor\`: Inspect local env, configs, and the OpenHands bootstrap path. +- \`autoweave run-example\`: Run the notifications example against the composed local runtime. +- \`autoweave run-workflow\`: Run the current workflow from a user request instead of the fixed sample brief. +- \`autoweave worker\`: Run a real Celery worker for queued AutoWeave workflow execution. +- \`autoweave ui\`: Launch the lightweight local monitoring UI. +- \`autoweave start\`: Start the entire local execution environment: UI and Celery worker. +- \`autoweave cleanup-local-state\`: Purge stale canonical runs and local generated runtime residue. +- \`autoweave new-project\`: Initialize a new AutoWeave project. +`, + 'help_quick_start': `# Quick Start + +Welcome to AutoWeave! This guide will help you get your first agent workflow running locally. + +## 1. Initialization +First, initialize a new AutoWeave project in a fresh directory: +\`\`\`bash +autoweave new-project +\`\`\` + +## 2. Bootstrapping +Create the required agent configurations and bootstrap the local environment: +\`\`\`bash +autoweave bootstrap +\`\`\` + +## 3. Starting the Control Plane +Start the AutoWeave UI and Celery worker using the \`start\` command. This will spin up the local dashboard on \`http://127.0.0.1:8766\`: +\`\`\`bash +autoweave start +\`\`\` - ` +## 4. Running a Workflow +To execute a workflow, you can either trigger a pre-configured example or run a custom workflow: +\`\`\`bash +autoweave run-example +\`\`\` +`, + 'help_troubleshooting': `# Troubleshooting + +Common issues and their resolutions when operating AutoWeave. + +## Database Locks (SQLite) +If you see "database is locked" errors, it usually means the Celery worker and the UI server are competing for database writes. +**Solution:** Stop both processes and restart them cleanly using \`autoweave start\`. + +## Missing OpenHands Runtime +If \`autoweave doctor\` reports a missing OpenHands bootstrap path, ensure you have correctly installed the required Docker dependencies or pulled the latest OpenHands image. + +## Stale Runs Showing in Dashboard +If the UI dashboard is showing stale runs or incomplete executions that are no longer active in the Celery queue: +**Solution:** Run the cleanup command to purge stale state: +\`\`\`bash +autoweave cleanup-local-state +\`\`\` + +## UI Fails to Bind Port +If starting the UI throws an "Address already in use" error for port 8766: +**Solution:** Kill any existing processes bound to that port: +\`\`\`bash +kill -9 \$(lsof -t -i :8766) +\`\`\` +`, }; /* --- SPA State & Logic --- */ @@ -3397,7 +3464,7 @@ class StorageUnitOfWork // Docs routing handles sub-routes implicitly let mainRoute = route; - if (["ARCHITECTURE", "DEPLOYMENT", "autoweave_diagrams_source", "autoweave_high_level_architecture", "autoweave_implementation_spec"].includes(route)) { + if (["ARCHITECTURE", "DEPLOYMENT", "autoweave_diagrams_source", "autoweave_high_level_architecture", "autoweave_implementation_spec", "help_cli_reference", "help_quick_start", "help_troubleshooting"].includes(route)) { mainRoute = 'docs'; } From 20196d20d0da0549f95139092fccd2342d579548 Mon Sep 17 00:00:00 2001 From: Yash Kumar Date: Fri, 26 Jun 2026 14:10:37 +0530 Subject: [PATCH 3/6] docs: remove emojis from GitHub README --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 2d18ad5..bff41ac 100644 --- a/README.md +++ b/README.md @@ -33,13 +33,13 @@ AutoWeave is the **execution engine** for multi-agent software engineering teams ### Key Features -- 🔀 **Workflow Orchestration** — Define, compile, and execute DAGs of agentic tasks with dependency-aware dynamic scheduling -- 💾 **Durable State** — Resume paused runs, track attempts, persist context safely across PostgreSQL -- 🤝 **Human-in-the-Loop** — Native primitives for pausing execution to request approvals or clarifications -- 📋 **Queue Dispatch** — Offload long-running tasks to Celery workers backed by Redis -- 🔍 **Local Monitoring** — Inspect runs via a lightweight local dashboard and playground -- 🧠 **Context Layered Resolution** — Workspace → Postgres → pgvector → Artifact Store → Neo4j → Redis → typed miss escalation -- 📊 **Observability** — OpenTelemetry-compatible spans, metrics, and domain events +- **Workflow Orchestration** — Define, compile, and execute DAGs of agentic tasks with dependency-aware dynamic scheduling +- **Durable State** — Resume paused runs, track attempts, persist context safely across PostgreSQL +- **Human-in-the-Loop** — Native primitives for pausing execution to request approvals or clarifications +- **Queue Dispatch** — Offload long-running tasks to Celery workers backed by Redis +- **Local Monitoring** — Inspect runs via a lightweight local dashboard and playground +- **Context Layered Resolution** — Workspace → Postgres → pgvector → Artifact Store → Neo4j → Redis → typed miss escalation +- **Observability** — OpenTelemetry-compatible spans, metrics, and domain events --- @@ -69,7 +69,7 @@ flowchart TD 4. **Human intervention is first-class** — Clarifications, approvals, and overrides are formal workflow objects 5. **One sandbox per task attempt** — Isolated worktree per execution -> 📖 See [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) for the complete architecture specification. +> See [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) for the complete architecture specification. --- @@ -207,7 +207,7 @@ See [`.env.example`](.env.example) for all configuration options. Key variables: | `NEO4J_URL` | Neo4j connection URL | — | | `OPENHANDS_AGENT_SERVER_BASE_URL` | OpenHands server URL | `http://127.0.0.1:8000` | -> 📖 See [DEVELOPMENT.md](DEVELOPMENT.md) for the complete development guide. +> See [DEVELOPMENT.md](DEVELOPMENT.md) for the complete development guide. --- @@ -241,7 +241,7 @@ make test:integration make test:ui ``` -> 📖 See [TESTING.md](TESTING.md) for the full testing philosophy and guidelines. +> See [TESTING.md](TESTING.md) for the full testing philosophy and guidelines. --- From 1bdca588e594dc4e256fd093eba0dce59f4a5ebf Mon Sep 17 00:00:00 2001 From: Yash Kumar Date: Fri, 26 Jun 2026 14:10:51 +0530 Subject: [PATCH 4/6] build: create PyPI-specific README and bump version to 0.1.1 --- PYPI_README.md | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++ pyproject.toml | 12 ++++++----- 2 files changed, 61 insertions(+), 5 deletions(-) create mode 100644 PYPI_README.md diff --git a/PYPI_README.md b/PYPI_README.md new file mode 100644 index 0000000..7fc49d9 --- /dev/null +++ b/PYPI_README.md @@ -0,0 +1,54 @@ +# AutoWeave: Multi-Agent Orchestration Library + +**AutoWeave** is the execution engine for multi-agent software engineering teams. It orchestrates specialized AI agents as a coherent team, managing workflow compilation, task graphs, queue-backed durable execution, and human-in-the-loop approvals. + +## What is AutoWeave? + +AutoWeave owns the orchestration layer, explicitly decoupled from the single-agent execution layer (e.g., OpenHands). + +- **Workflow Orchestration**: Define, compile, and execute DAGs of agentic tasks with dependency-aware dynamic scheduling. +- **Durable State**: Resume paused runs, track attempts, and persist context safely across PostgreSQL. +- **Human-in-the-Loop**: Native primitives for pausing execution to request approvals or clarifications. +- **Queue Dispatch**: Offload long-running tasks to Celery workers backed by Redis. +- **Local Monitoring**: Inspect runs via a lightweight local dashboard and playground. + +## Installation + +You can install AutoWeave via pip: + +```bash +pip install autoweave +``` + +## Quick Start + +Initialize a new AutoWeave project in a fresh directory: + +```bash +autoweave new-project +``` + +Next, bootstrap the local environment and configurations: + +```bash +autoweave bootstrap +``` + +Start the control plane UI and Celery worker: + +```bash +autoweave start +``` + +## CLI Reference + +The `autoweave` CLI provides complete control over your local environment. Here are the core commands: +- `status`: Show a minimal repository status summary. +- `validate`: Validate docs, configs, and sample agent fixtures. +- `create-agent`: Create a new agent bundle with soul, playbook, config, and skills. +- `run-workflow`: Run the current workflow from a user request. + +Run `autoweave --help` for the full list of options. + +## Support +For comprehensive architecture specs and deployment instructions, visit our GitHub repository documentation. diff --git a/pyproject.toml b/pyproject.toml index 2b74995..ad120e5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,13 +1,15 @@ [build-system] -requires = ["tomli; python_version < '3.11'"] -build-backend = "build_backend" -backend-path = ["."] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.hatch.build.targets.wheel] +packages = ["autoweave", "apps"] [project] name = "autoweave" -version = "0.1.0" +version = "0.1.1" description = "Terminal-first multi-agent orchestration library built around OpenHands remote workers and Vertex AI." -readme = "README.md" +readme = "PYPI_README.md" license = "MIT" requires-python = ">=3.10" authors = [ From 576717856f8b5a0a79cda34b49dc38db25e618ca Mon Sep 17 00:00:00 2001 From: Yash Kumar Date: Fri, 26 Jun 2026 14:19:58 +0530 Subject: [PATCH 5/6] docs: enrich PyPI description and quick start with python code examples --- PYPI_README.md | 82 ++++++++++++++++++-------- autoweave/monitoring/dashboard_page.py | 18 +++++- docs/help/quick_start.md | 18 +++++- pyproject.toml | 2 +- 4 files changed, 90 insertions(+), 30 deletions(-) diff --git a/PYPI_README.md b/PYPI_README.md index 7fc49d9..2176206 100644 --- a/PYPI_README.md +++ b/PYPI_README.md @@ -1,54 +1,86 @@ # AutoWeave: Multi-Agent Orchestration Library -**AutoWeave** is the execution engine for multi-agent software engineering teams. It orchestrates specialized AI agents as a coherent team, managing workflow compilation, task graphs, queue-backed durable execution, and human-in-the-loop approvals. +**AutoWeave** is the robust execution engine for multi-agent software engineering teams. It orchestrates specialized AI agents as a coherent team, managing workflow compilation, task graphs, queue-backed durable execution, and human-in-the-loop approvals. -## What is AutoWeave? +## Core Features -AutoWeave owns the orchestration layer, explicitly decoupled from the single-agent execution layer (e.g., OpenHands). - -- **Workflow Orchestration**: Define, compile, and execute DAGs of agentic tasks with dependency-aware dynamic scheduling. -- **Durable State**: Resume paused runs, track attempts, and persist context safely across PostgreSQL. -- **Human-in-the-Loop**: Native primitives for pausing execution to request approvals or clarifications. -- **Queue Dispatch**: Offload long-running tasks to Celery workers backed by Redis. -- **Local Monitoring**: Inspect runs via a lightweight local dashboard and playground. +- **Workflow Orchestration**: Define, compile, and execute Directed Acyclic Graphs (DAGs) of agentic tasks. +- **Durable State**: Resume paused runs, track individual attempts, and safely persist context to PostgreSQL. +- **Human-in-the-Loop**: Built-in primitives to pause execution and request approvals or clarifications from a human. +- **Queue Dispatch**: Offload long-running autonomous tasks to Celery workers backed by Redis. +- **Local Monitoring**: Inspect active and historic runs via a beautiful, lightweight local developer dashboard. ## Installation -You can install AutoWeave via pip: +Install AutoWeave directly from PyPI using pip or uv: ```bash pip install autoweave ``` -## Quick Start +## Quick Start (CLI) -Initialize a new AutoWeave project in a fresh directory: +AutoWeave provides a comprehensive CLI for local orchestration. +1. **Initialize a new project** in a fresh directory: ```bash autoweave new-project ``` -Next, bootstrap the local environment and configurations: - +2. **Bootstrap the local environment** and configuration files: ```bash autoweave bootstrap ``` -Start the control plane UI and Celery worker: - +3. **Start the control plane UI** and background Celery worker: ```bash autoweave start ``` -## CLI Reference +4. **Execute a workflow** from the terminal: +```bash +autoweave run-workflow --root . --request "Create a Python script that calculates Fibonacci numbers" +``` + +## Programmatic Usage + +AutoWeave exposes a clean Python API for integrating orchestration into your own applications. + +### 1. Launching a Workflow +```python +from autoweave.orchestration.runtime import build_local_runtime -The `autoweave` CLI provides complete control over your local environment. Here are the core commands: -- `status`: Show a minimal repository status summary. -- `validate`: Validate docs, configs, and sample agent fixtures. -- `create-agent`: Create a new agent bundle with soul, playbook, config, and skills. -- `run-workflow`: Run the current workflow from a user request. +# Initialize the runtime for your project directory +runtime = build_local_runtime(root_path="./my-weave-project") + +# Dispatch a new workflow to the agents +workflow_run = runtime.launch_workflow( + request="Review the backend contract and propose next steps" +) +print(f"Successfully started workflow run: {workflow_run.id}") +``` + +### 2. Inspecting the State +```python +from autoweave.monitoring.service import MonitoringService + +service = MonitoringService(db_path="./my-weave-project/autoweave.db") + +# Fetch a snapshot of all active runs +state_snapshot = service.snapshot(limit=5) +print(state_snapshot) +``` + +## Dashboard & Monitoring + +AutoWeave includes a built-in monitoring dashboard to trace agent executions, view generated artifacts, and resolve human-in-the-loop approvals. + +To start it independently: +```bash +autoweave ui --root ./my-weave-project +``` +Then navigate to `http://localhost:8766` in your browser. -Run `autoweave --help` for the full list of options. +## Support & Architecture -## Support -For comprehensive architecture specs and deployment instructions, visit our GitHub repository documentation. +For comprehensive architecture specs, deployment instructions, and advanced configuration options, visit our [GitHub Repository Documentation](https://github.com/hypnoastic/Autoweave-Library). diff --git a/autoweave/monitoring/dashboard_page.py b/autoweave/monitoring/dashboard_page.py index 97969a2..3bff0c6 100644 --- a/autoweave/monitoring/dashboard_page.py +++ b/autoweave/monitoring/dashboard_page.py @@ -3367,10 +3367,24 @@ class StorageUnitOfWork autoweave start \`\`\` -## 4. Running a Workflow +## 4. Running a Workflow (CLI) To execute a workflow, you can either trigger a pre-configured example or run a custom workflow: \`\`\`bash -autoweave run-example +autoweave run-workflow --root . --request "Create a React component for a login page" +\`\`\` + +## 5. Running a Workflow (Python) +You can also trigger runs natively from your own Python code: + +\`\`\`python +from autoweave.orchestration.runtime import build_local_runtime + +runtime = build_local_runtime(root_path=".") + +workflow_run = runtime.launch_workflow( + request="Review the backend contract and propose next steps" +) +print(f"Successfully started workflow run: {workflow_run.id}") \`\`\` `, 'help_troubleshooting': `# Troubleshooting diff --git a/docs/help/quick_start.md b/docs/help/quick_start.md index 31f81ac..5324f71 100644 --- a/docs/help/quick_start.md +++ b/docs/help/quick_start.md @@ -20,8 +20,22 @@ Start the AutoWeave UI and Celery worker using the `start` command. This will sp autoweave start ``` -## 4. Running a Workflow +## 4. Running a Workflow (CLI) To execute a workflow, you can either trigger a pre-configured example or run a custom workflow: ```bash -autoweave run-example +autoweave run-workflow --root . --request "Create a React component for a login page" +``` + +## 5. Running a Workflow (Python) +You can also trigger runs natively from your own Python code: + +```python +from autoweave.orchestration.runtime import build_local_runtime + +runtime = build_local_runtime(root_path=".") + +workflow_run = runtime.launch_workflow( + request="Review the backend contract and propose next steps" +) +print(f"Successfully started workflow run: {workflow_run.id}") ``` diff --git a/pyproject.toml b/pyproject.toml index ad120e5..cce516b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,7 +7,7 @@ packages = ["autoweave", "apps"] [project] name = "autoweave" -version = "0.1.1" +version = "0.1.2" description = "Terminal-first multi-agent orchestration library built around OpenHands remote workers and Vertex AI." readme = "PYPI_README.md" license = "MIT" From 658d4bd8af95846bb9d1ac744600fc75a45ab6af Mon Sep 17 00:00:00 2001 From: Yash Kumar Date: Fri, 26 Jun 2026 14:48:31 +0530 Subject: [PATCH 6/6] ci: fix PyPI publish action to use API token secret instead of OIDC --- .github/workflows/release.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 77fe0a3..c419635 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -34,6 +34,8 @@ jobs: - name: Publish to PyPI uses: pypa/gh-action-pypi-publish@release/v1 + with: + password: ${{ secrets.PYPI_API_TOKEN }} - name: Create GitHub Release uses: softprops/action-gh-release@v2