DyroEngineeringFlow: local-first automation and delivery control for multi-repository teams
Project description
DyroEngineeringFlow
English | 简体中文 | 日本語 | 한국어 | Español
DyroEngineeringFlow · dyro CLI is a local-first engineering automation and delivery control platform for multi-repository teams. It brings development lines, Git worktrees, agent launchers, task gates, independent review, and merge audit into versioned workspace configuration.
Keep engineering moving from task to delivery.
DyroEngineeringFlow is not coupled to Codex, Claude, or any business domain. Each team supplies a dyro.toml Profile for repositories, layouts, agent adapters, and delivery policy; business rules, model cost, and release practices stay in that Profile.
What it enforces
- A task belongs to exactly one development line—never a mixed feature or hotfix workspace.
- Each task runs in its own
git worktreeon atask/<id>branch. - Gates are executed by the orchestrator; an agent's self-report is not evidence of success.
- Review is bound to the execution receipt and exact per-repository task HEADs; source drift invalidates it.
- A task needs independent review before it becomes
done; merge and push require explicit confirmation by default. - Executable configuration is represented as argv arrays. The core never runs TOML-provided shell strings.
Quick start
For daily CLI use, install dyro from PyPI in an isolated pipx environment (Python 3.11 or later):
python3 -m pip install --user --upgrade pipx
python3 -m pipx ensurepath
# Open a new terminal after ensurepath, then:
pipx install dyro
dyro --version
To upgrade later, run pipx upgrade dyro. If your team manages Python packages through pip instead, use:
python3 -m pip install --user --upgrade dyro
Place your repositories in a workspace, then initialize it:
mkdir my-workspace && cd my-workspace
# Clone or move your Git repositories under this directory first.
dyro init . --discover --name my-workspace
--discover scans local Git repositories, records their workspace-relative paths, derives their development-line mounts, and reads origin when available—no TOML editing. If the workspace has no repositories yet, use the guided fallback:
dyro init . --wizard --name my-workspace
Add a repository later without opening dyro.toml:
dyro repo add repositories/services/payments
dyro repo list
If a Profile contains remotes, missing repository anchors can be created safely:
dyro --dry-run bootstrap
dyro bootstrap --yes
dyro doctor
For a new teammate, the normal entry point is one command. It checks the workspace, then selects a development line and local agent:
dyro start
Delivery workflow
Use explicit commands when scripting or leading a release:
dyro doctor
dyro line create release-2026-10 --base origin/main --yes
# Override the verified base only for repositories that need one.
dyro line create release-2026-10 --base origin/main --repo-base web=v2026.10.0 --yes
dyro open release-2026-10 --agent codex
dyro task create API-101 --title "Implement API contract" --line release-2026-10 --repository api
dyro task next
dyro task next --run --yes
dyro task review API-101
dyro task merge API-101 --yes
dyro changeset create release-2026-10-ready --line release-2026-10
dyro changeset verify release-2026-10-ready
A production hotfix must state its verified production base; it never inherits a default branch implicitly:
dyro hotfix create incident-123 --base v2026.09.7 --repos api,web --yes
For a Profile whose execution and approval are run by a separate trusted system, set policy.execution_mode = "external" and policy.require_external_signoff = true. Local Dyro will then allow only planning; a review bound to the receipt and exact task HEADs must be signed explicitly before a task becomes done:
dyro task claim API-101 --by isolated-runner-1
dyro task evidence execution API-101 --receipt /runner/out/receipt.md --gates /runner/out/gates.json --heads /runner/out/task-heads.json
dyro task evidence review API-101 --file /review/out/review.md
dyro task signoff API-101 --by release-manager
Every write-capable operation has a planning mode:
dyro --dry-run line create release-2026-10 --base origin/main
dyro --dry-run task run API-101
Command map
| Command | Purpose |
|---|---|
init --discover / init --wizard / repo add/list / bootstrap / start |
Onboard a teammate without TOML edits, manage anchors, and choose a line and agent. |
doctor / status |
Validate and display control-plane state. |
line create/list |
Create, register, and inspect feature development lines. |
hotfix create |
Create a hotfix line from an explicit production base. |
changeset create/list/verify |
Pin and verify the exact clean Git heads that make up a multi-repository delivery. |
agent list / open |
Inspect adapters or open an agent in the correct development line. |
task create/list/board/status/next |
Manage task manifests, the state machine, and the next actionable task. |
task run/answer/gates/review/signoff |
Run tasks, resolve questions, execute gates, request independent review, and record external sign-off when a Profile requires it. |
task claim / task evidence execution/review |
One-time claim and receipt-, gate-, task-HEAD-, and review-evidence import for an external isolated runner. |
task merge |
Merge a reviewed task branch into its owning development line. |
task loop/daemon/stats/decisions |
Run controlled batches, scheduling, ledger reporting, and decision gates. |
See the architecture and Profile contract and the existing control-plane migration guide for implementation detail.
Languages and documentation
This README is maintained in English, Simplified Chinese, Japanese, Korean, and Spanish. Commands, configuration keys, directory names, and safety rules are deliberately identical across translations. The current CLI messages and extended technical guides are primarily Chinese; multilingual README support does not claim that the runtime has language switching yet.
Current boundaries
DyroEngineeringFlow provides a complete local workflow loop and policy controls for keeping stricter teams in planning-only local mode. It does not create remote repositories, ship SaaS credentials, or include an external runner implementation; external runner integration belongs in a Profile extension. Local multi-repository merges are preflighted and recovered as one operation; remote Git servers cannot provide atomic cross-repository push, so partial push failure is recorded for recovery. Automatic merge requires permission in both the task manifest and local policy. It is available under the MIT License and as dyro on PyPI.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dyro-0.3.0.tar.gz.
File metadata
- Download URL: dyro-0.3.0.tar.gz
- Upload date:
- Size: 43.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8cacd7550ef229df5d8a7bd584c8c06961b1d5813e73cac7c0af8e2660764c1b
|
|
| MD5 |
4a8da2c0635076c28323ad4c15dc0ced
|
|
| BLAKE2b-256 |
8ddf68d4783ac00379c5f21881cc5dfef427768b2406a78c2b07070b49c339cc
|
Provenance
The following attestation bundles were made for dyro-0.3.0.tar.gz:
Publisher:
pypi-publish.yml on DandreYang/DyroEngineeringFlow
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dyro-0.3.0.tar.gz -
Subject digest:
8cacd7550ef229df5d8a7bd584c8c06961b1d5813e73cac7c0af8e2660764c1b - Sigstore transparency entry: 2225802422
- Sigstore integration time:
-
Permalink:
DandreYang/DyroEngineeringFlow@9fc80a1f20104a869ffcedf404c7088612ab76ba -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/DandreYang
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi-publish.yml@9fc80a1f20104a869ffcedf404c7088612ab76ba -
Trigger Event:
release
-
Statement type:
File details
Details for the file dyro-0.3.0-py3-none-any.whl.
File metadata
- Download URL: dyro-0.3.0-py3-none-any.whl
- Upload date:
- Size: 39.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3f13a68cea1efcc8a732717863c605ba8c69770995cb8128712d52bd631a4716
|
|
| MD5 |
a646b0c5d2ca5c77ac64ce744362d5ad
|
|
| BLAKE2b-256 |
8a53c281b1df0ca86e6135a96b16fa81a384268389d60bed63315efe089728e3
|
Provenance
The following attestation bundles were made for dyro-0.3.0-py3-none-any.whl:
Publisher:
pypi-publish.yml on DandreYang/DyroEngineeringFlow
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dyro-0.3.0-py3-none-any.whl -
Subject digest:
3f13a68cea1efcc8a732717863c605ba8c69770995cb8128712d52bd631a4716 - Sigstore transparency entry: 2225803149
- Sigstore integration time:
-
Permalink:
DandreYang/DyroEngineeringFlow@9fc80a1f20104a869ffcedf404c7088612ab76ba -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/DandreYang
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi-publish.yml@9fc80a1f20104a869ffcedf404c7088612ab76ba -
Trigger Event:
release
-
Statement type: