Ensemble Software Engineering (ESE) CLI
Project description
Ensemble Software Engineering (ESE)
ESE is a lightweight CLI framework for AI-assisted software development using specialized model roles and explicit ensemble constraints.
Core pipeline
flowchart TD
A["Human Scope"] --> B["Architect"]
B --> C["Implementer"]
C --> D["Adversarial Reviewer"]
C --> E["Security Auditor"]
C --> F["Test Generator"]
C --> G["Performance Analyst"]
D --> H["Human Merge"]
E --> H
F --> H
G --> H
Installation
pip install ese-cli
Homebrew install from the dedicated tap:
brew tap Excelsior2026/ese https://github.com/Excelsior2026/homebrew-ese
brew install ese-cli
If you want local models via Ollama:
brew install ollama
brew services start ollama
One-Command Local Start
There is now a local GUI: the ESE dashboard.
From the repo root, the simplest way to start everything is:
./start_ese.sh
That script will:
- create
.venvif needed, - install/update the package in the virtualenv,
- start the local dashboard GUI.
If you run a local/Ollama-backed workflow through the launcher, it now:
- auto-starts Ollama when it is installed but not running,
- prompts you to install Ollama or switch to a hosted provider when Ollama is missing.
Other common launcher modes:
./start_ese.sh task "Prepare a staged rollout plan for billing"
./start_ese.sh pr --base origin/main --head HEAD
./start_ese.sh cli report --artifacts-dir artifacts
Production quickstart
For the fastest path, you can now start from a task description instead of writing config first:
ese task "Prepare a staged rollout plan for the new billing flow"
Use ese templates to inspect the built-in task templates.
If you want an explicit saved config, use the original wizard path:
- Generate a config:
ese init --advanced
The wizard now asks for:
- a real project scope/task,
- whether this should be a
democonfig (dry-run, no API calls) or aliveconfig, - provider/model defaults appropriate for that choice,
- selected roles and optional per-role model overrides in advanced mode.
- Validate configuration and ensemble constraints:
ese doctor --config ese.config.yaml
- Execute the pipeline:
ese start --config ese.config.yaml
Pass --artifacts-dir ... only when you want to override output.artifacts_dir from the config.
- Review outputs:
artifacts/ese_summary.mdartifacts/pipeline_state.jsonartifacts/ese_config.snapshot.yaml- per-role reports in
artifacts/*.jsonwhenoutput.enforce_json: true(default)
ese run remains available as a backward-compatible alias for ese start.
For ad hoc runs, you can override the saved scope:
ese start --config ese.config.yaml --scope "Review the release checklist for hidden rollback risks"
Task-First CLI
Opinionated templates:
ese templates
Task-first execution without hand-authoring config:
ese task "Prepare a safer release workflow" --template release-readiness
Pull request review from a local diff or GitHub PR:
ese pr --repo-path . --base origin/main --head HEAD
Or, if you use GitHub CLI:
ese pr --repo-path . --pr 42
This writes the usual run artifacts plus artifacts/pr_review.md, a GitHub-ready review summary.
Status and aggregated reporting for an artifacts directory:
ese status --artifacts-dir artifacts
ese report --artifacts-dir artifacts
Rerun from a specific role while reusing upstream artifacts:
ese rerun implementer --artifacts-dir artifacts
Launch the local dashboard:
ese dashboard --artifacts-dir artifacts
The dashboard now supports both task-first runs and PR review runs.
Role catalog
Use ese roles to print the role catalog in the CLI.
architect: System design, decomposition, and interface contracts.implementer: Code changes and refactors.adversarial_reviewer: Bug/risk hunting and regression checks.security_auditor: Threat modeling and vulnerability review.test_generator: Unit/integration/e2e test generation.performance_analyst: Latency, memory, and scalability analysis.documentation_writer: README, API docs, and migration notes.devops_sre: CI/CD, deploy safety, and observability.database_engineer: Schema/index/migration correctness.release_manager: Go/no-go risk assessment and rollout checks.
Provider/model selection and adapters
Wizard provider presets: openai, anthropic, google, xai, openrouter, huggingface, local, custom_api.
If no hosted-provider credentials are detected, the wizard now defaults to local, and choosing local defaults the execution mode to live.
Built-in runtime adapters:
dry-run: deterministic placeholder artifacts, no API calls.openai: OpenAI Responses API adapter with retry/timeout handling.local: Ollama-backed local adapter using the OpenAI-compatible endpoint.custom_api: Responses-compatible custom provider adapter with validated base URL and auth env var.module:function: custom Python callable adapter.
When output.enforce_json: true, adapters must return valid JSON role reports and gating.fail_on_high: true will stop the pipeline on HIGH or CRITICAL findings.
Demo vs live setup
demo: writes a safedry-runconfig using the selected provider/model defaults. This is the prudent path for first-time setup, local walkthroughs, and providers without native live adapters.live: uses the built-in runtime foropenai,local(Ollama), andcustom_api.- Other providers remain available for model selection in the wizard, but live execution requires an explicit
module:functionadapter in advanced mode.
Local runtime example
provider:
name: local
model: qwen2.5-coder:14b
runtime:
adapter: local
timeout_seconds: 60
max_retries: 2
retry_backoff_seconds: 1.0
local:
base_url: http://localhost:11434/v1
use_openai_compat_auth: true
OpenAI runtime example
provider:
name: openai
model: gpt-5-mini
api_key_env: OPENAI_API_KEY
runtime:
adapter: openai
timeout_seconds: 60
max_retries: 2
retry_backoff_seconds: 1.0
openai:
base_url: https://api.openai.com/v1
Custom API runtime example
provider:
name: my-gateway
model: my-model-id
api_key_env: CUSTOM_GATEWAY_TOKEN
base_url: https://gateway.example/v1
runtime:
adapter: custom_api
timeout_seconds: 60
max_retries: 2
retry_backoff_seconds: 1.0
custom_api:
base_url: https://gateway.example/v1
Contract documentation
- Config schema + version policy:
docs/CONFIG_CONTRACT.md - Pipeline state schema + deterministic role ordering:
docs/PIPELINE_STATE.md - Troubleshooting:
docs/TROUBLESHOOTING.md - Contributor CI requirements:
CONTRIBUTING.md - Release checklist for 1.0.0:
MILESTONE_1_0_0.md - Changelog:
CHANGELOG.md - Release process:
docs/RELEASE.md
Project details
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 ese_cli-1.0.1.tar.gz.
File metadata
- Download URL: ese_cli-1.0.1.tar.gz
- Upload date:
- Size: 78.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c8b6ffa84e63d21169925e1a81df37faf772b12349859c68c1e240b1308348f2
|
|
| MD5 |
7c321e4da7d077ee67f231d6c6232249
|
|
| BLAKE2b-256 |
02efecc8ce212d8eff70de6da2360e4f116093885c50b1e67e1dcdd6fb06d9e6
|
File details
Details for the file ese_cli-1.0.1-py3-none-any.whl.
File metadata
- Download URL: ese_cli-1.0.1-py3-none-any.whl
- Upload date:
- Size: 70.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
291ab78b5da5ae8528a253d0bdbe2d9c7ebee7438c9cb22b4b1fb9e5d6be23ab
|
|
| MD5 |
c94d9952f569a8f070c7d290c5c2934a
|
|
| BLAKE2b-256 |
27eab0fb466aab4faf0d14eff16a2f982b4760e3fc33b4917671c221a99ee4e8
|