@olhapi/maestro-linux-arm64-gnu 0.1.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +318 -0
- package/lib/maestro +0 -0
- package/package.json +37 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Oleh Vdovenko
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
# Maestro
|
|
2
|
+
|
|
3
|
+
Maestro is a local-first orchestration runtime for agent-driven software work.
|
|
4
|
+
|
|
5
|
+
It combines a SQLite-backed tracker, an orchestrator that reads `WORKFLOW.md`, a private MCP daemon bridged by `maestro mcp`, and an HTTP server that serves the embedded dashboard plus JSON/WebSocket APIs.
|
|
6
|
+
|
|
7
|
+
Maestro stays local-first even when a project syncs issues from Linear. Provider-backed issues are synchronized into the local store, then supervised through the same local queue, runtime state, MCP tools, and dashboard surfaces as local kanban issues.
|
|
8
|
+
|
|
9
|
+
## Install
|
|
10
|
+
|
|
11
|
+
### npm
|
|
12
|
+
|
|
13
|
+
Current public prerelease install on supported platforms:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm install -g @olhapi/maestro@next
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Refresh an existing prerelease install:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npm install -g @olhapi/maestro@next
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
The installed command name is still `maestro`.
|
|
26
|
+
|
|
27
|
+
Until the first stable release ships, the npm prerelease channel is published on `next`. After `v0.1.0`, `npm install -g @olhapi/maestro` will follow the stable `latest` channel.
|
|
28
|
+
|
|
29
|
+
Official npm builds currently cover:
|
|
30
|
+
|
|
31
|
+
| Platform | Arch | Notes |
|
|
32
|
+
| --- | --- | --- |
|
|
33
|
+
| macOS | arm64 | native package |
|
|
34
|
+
| macOS | x64 | native package |
|
|
35
|
+
| Linux | x64 | glibc only |
|
|
36
|
+
| Linux | arm64 | glibc only |
|
|
37
|
+
| Windows | x64 | native package |
|
|
38
|
+
|
|
39
|
+
Linux npm packages currently target glibc only. Alpine and other musl-based distros should build from source or use Docker.
|
|
40
|
+
|
|
41
|
+
### Docker
|
|
42
|
+
|
|
43
|
+
Published image:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
docker pull ghcr.io/olhapi/maestro:latest
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
The image entrypoint is `maestro`. Its default command is `run --db /data/maestro.db`, so this starts the shared daemon with container defaults:
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
docker run --rm -v ./data:/data ghcr.io/olhapi/maestro:latest
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
To run against a mounted repo explicitly:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
docker run --rm -v ./repo:/repo -v ./data:/data ghcr.io/olhapi/maestro:latest run --db /data/maestro.db /repo --port 8787
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Build From Source
|
|
62
|
+
|
|
63
|
+
For local development or unsupported platforms:
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
go build -o maestro ./cmd/maestro
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Local contributor Docker build:
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
docker build -t maestro-local .
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Quick Start
|
|
76
|
+
|
|
77
|
+
### 1. Initialize a workflow file
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
maestro workflow init .
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
This writes a repo-local `WORKFLOW.md` with the default orchestration settings and prompt template.
|
|
84
|
+
|
|
85
|
+
### 2. Create a project and queue some work
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
maestro project create "My App" --repo /absolute/path/to/my-app --desc "Example project"
|
|
89
|
+
maestro issue create "Add login page" --project <project_id> --labels feature,ui
|
|
90
|
+
maestro issue create "Fix auth bug" --project <project_id> --priority 1 --labels bug
|
|
91
|
+
maestro issue move ISS-1 ready
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Projects default to the local `kanban` provider. You can also register a project with limited Linear-backed sync by passing `--provider linear --provider-project-ref <slug>` and, if needed, `--provider-endpoint` or `--provider-assignee`.
|
|
95
|
+
|
|
96
|
+
### 3. Start the daemon
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
maestro run
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
When `--db` is omitted, Maestro uses `~/.maestro/maestro.db` by default. When `--port` is omitted, Maestro serves HTTP on `http://127.0.0.1:8787`.
|
|
103
|
+
|
|
104
|
+
Running `maestro run` without `repo_path` starts the shared daemon for the current database. It does not infer the repo from your shell working directory.
|
|
105
|
+
|
|
106
|
+
Issue images are stored next to the active database under `assets/images`. With the default database path, that means `~/.maestro/assets/images`. If you run with `--db /custom/path/maestro.db`, image assets move to `/custom/path/assets/images`.
|
|
107
|
+
|
|
108
|
+
The preview warning on `run` is intentional. Pass `--i-understand-that-this-will-be-running-without-the-usual-guardrails` only when unattended Codex execution is actually what you want.
|
|
109
|
+
|
|
110
|
+
### 4. Expose the tracker to MCP clients
|
|
111
|
+
|
|
112
|
+
Add the built or installed binary to your MCP client config:
|
|
113
|
+
|
|
114
|
+
```json
|
|
115
|
+
{
|
|
116
|
+
"mcpServers": {
|
|
117
|
+
"maestro": {
|
|
118
|
+
"command": "/absolute/path/to/maestro",
|
|
119
|
+
"args": ["mcp"]
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
`maestro mcp` is a stdio bridge into the live `maestro run` daemon for the same database. Start `maestro run` first, then let your MCP client invoke `maestro mcp`.
|
|
126
|
+
|
|
127
|
+
### 5. Open the dashboard or use live CLI helpers
|
|
128
|
+
|
|
129
|
+
By default, `maestro run` serves:
|
|
130
|
+
|
|
131
|
+
- the embedded dashboard on `/`
|
|
132
|
+
- the live observability API on `/api/v1/*`
|
|
133
|
+
- the dashboard application API on `/api/v1/app/*`
|
|
134
|
+
- the dashboard invalidation stream on `/api/v1/ws`
|
|
135
|
+
|
|
136
|
+
The shared issue composer in the embedded dashboard also supports browser speech-to-text for issue descriptions. In supported Chromium-based browsers it shows live interim text while you speak; elsewhere it degrades to a disabled control without changing the API surface.
|
|
137
|
+
|
|
138
|
+
Useful live helpers:
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
maestro status --dashboard --api-url http://127.0.0.1:8787
|
|
142
|
+
maestro sessions --api-url http://127.0.0.1:8787
|
|
143
|
+
maestro events --api-url http://127.0.0.1:8787 --limit 20
|
|
144
|
+
maestro runtime-series --api-url http://127.0.0.1:8787 --hours 24
|
|
145
|
+
maestro project start <project_id> --api-url http://127.0.0.1:8787
|
|
146
|
+
maestro project stop <project_id> --api-url http://127.0.0.1:8787
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## MCP, Run, and Dashboard Model
|
|
150
|
+
|
|
151
|
+
`maestro run` is the long-lived process for a given database. It starts:
|
|
152
|
+
|
|
153
|
+
- the provider service and local SQLite-backed store
|
|
154
|
+
- the orchestrator and agent runner
|
|
155
|
+
- a private MCP daemon used by `maestro mcp`
|
|
156
|
+
- the public HTTP server when `--port` is set or left at its default
|
|
157
|
+
|
|
158
|
+
`maestro mcp` does not start a separate orchestration server. It discovers the live daemon for the same `--db` and bridges that session over stdio for MCP clients.
|
|
159
|
+
|
|
160
|
+
Operationally:
|
|
161
|
+
|
|
162
|
+
- start `maestro run` first
|
|
163
|
+
- point `maestro mcp` at the same `--db`
|
|
164
|
+
- use `--api-url` for CLI helpers and live control commands that talk to the daemon over HTTP
|
|
165
|
+
|
|
166
|
+
## Common Operator Commands
|
|
167
|
+
|
|
168
|
+
Queue inspection and filtering:
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
maestro issue list --state backlog --project <project_id>
|
|
172
|
+
maestro issue list --blocked --search auth --sort priority_asc
|
|
173
|
+
maestro board --project <project_id>
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
Issue updates:
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
maestro issue update ISS-1 --labels bug,urgent --priority 1
|
|
180
|
+
maestro issue update ISS-1 --branch codex/ISS-1 --pr-url https://example.com/pull/123
|
|
181
|
+
maestro issue blockers set ISS-1 ISS-2 ISS-3
|
|
182
|
+
maestro issue unblock ISS-1 ISS-2
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
Issue images:
|
|
186
|
+
|
|
187
|
+
```bash
|
|
188
|
+
maestro issue images add ISS-1 ./screenshots/failing-checkout.png
|
|
189
|
+
maestro issue images list ISS-1
|
|
190
|
+
maestro issue images remove ISS-1 <image_id>
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
Image attachments are local-only, including for Linear-backed issues. Maestro accepts PNG, JPEG, WEBP, and GIF files up to 10 MiB each and serves them back through the local HTTP API and dashboard.
|
|
194
|
+
|
|
195
|
+
Recurring automation:
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
maestro issue create "Sync GitHub ready-to-work" \
|
|
199
|
+
--project <project_id> \
|
|
200
|
+
--type recurring \
|
|
201
|
+
--cron "*/15 * * * *" \
|
|
202
|
+
--desc "Check the GitHub project for issues labeled ready-to-work and create corresponding Maestro issues when they do not already exist."
|
|
203
|
+
maestro issue list --type recurring --wide
|
|
204
|
+
maestro issue run-now ISS-42 --api-url http://127.0.0.1:8787
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
Recurring issues are Maestro-native issues with a cron schedule in the daemon host's local timezone. The orchestrator will enqueue at most one catch-up run after downtime, will not overlap active runs, and coalesces extra schedule hits into a single pending rerun.
|
|
208
|
+
|
|
209
|
+
Readiness checks:
|
|
210
|
+
|
|
211
|
+
```bash
|
|
212
|
+
maestro verify --repo /absolute/path/to/my-app
|
|
213
|
+
maestro doctor --repo /absolute/path/to/my-app
|
|
214
|
+
maestro spec-check --repo /absolute/path/to/my-app
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
## Workflow Basics
|
|
218
|
+
|
|
219
|
+
`WORKFLOW.md` is the repo-local source of truth for orchestration behavior. It covers:
|
|
220
|
+
|
|
221
|
+
- tracker settings
|
|
222
|
+
- workspace root
|
|
223
|
+
- hook commands and timeout
|
|
224
|
+
- agent concurrency, mode, retry limits, and dispatch behavior
|
|
225
|
+
- optional review and done phase prompts
|
|
226
|
+
- Codex command and sandbox settings
|
|
227
|
+
- the prompt template rendered for each issue
|
|
228
|
+
|
|
229
|
+
Fresh `maestro workflow init --defaults` output currently defaults to:
|
|
230
|
+
|
|
231
|
+
- `tracker.kind: kanban`
|
|
232
|
+
- `polling.interval_ms: 10000`
|
|
233
|
+
- `workspace.root: ./workspaces`
|
|
234
|
+
- `agent.max_concurrent_agents: 3`
|
|
235
|
+
- `agent.max_turns: 4`
|
|
236
|
+
- `agent.max_retry_backoff_ms: 60000`
|
|
237
|
+
- `agent.max_automatic_retries: 8`
|
|
238
|
+
- `agent.mode: app_server`
|
|
239
|
+
- `agent.dispatch_mode: parallel`
|
|
240
|
+
- `codex.command: codex app-server`
|
|
241
|
+
- `codex.expected_version: 0.111.0`
|
|
242
|
+
- `codex.approval_policy: never`
|
|
243
|
+
- `codex.thread_sandbox: workspace-write`
|
|
244
|
+
- `codex.turn_sandbox_policy.type: workspaceWrite`
|
|
245
|
+
- `codex.turn_sandbox_policy.networkAccess: true`
|
|
246
|
+
|
|
247
|
+
Supported prompt-template variables are:
|
|
248
|
+
|
|
249
|
+
- `{{ issue.identifier }}`
|
|
250
|
+
- `{{ issue.title }}`
|
|
251
|
+
- `{{ issue.description }}`
|
|
252
|
+
- `{{ issue.state }}`
|
|
253
|
+
- `{{ phase }}`
|
|
254
|
+
- `{{ attempt }}`
|
|
255
|
+
|
|
256
|
+
The checked-in [`WORKFLOW.md`](WORKFLOW.md) is this repository's own workflow example. It is not guaranteed to match fresh `workflow init` defaults exactly.
|
|
257
|
+
|
|
258
|
+
Missing-file behavior differs by command:
|
|
259
|
+
|
|
260
|
+
- `maestro workflow init` creates `WORKFLOW.md` explicitly
|
|
261
|
+
- `maestro run` bootstraps a missing file automatically
|
|
262
|
+
- `maestro verify` checks readiness and returns remediation guidance
|
|
263
|
+
- `maestro doctor` runs the same readiness checks with different presentation
|
|
264
|
+
- `maestro spec-check` is non-mutating and fails if the workflow file is missing or invalid
|
|
265
|
+
|
|
266
|
+
## More Documentation
|
|
267
|
+
|
|
268
|
+
- [`docs/OPERATIONS.md`](docs/OPERATIONS.md): runtime surfaces, HTTP endpoints, extension tools, logs, and operational details
|
|
269
|
+
- [`docs/NPM_RELEASE.md`](docs/NPM_RELEASE.md): first npm prerelease bootstrap and the trusted-publishing release flow
|
|
270
|
+
- [`docs/E2E_REAL_CODEX.md`](docs/E2E_REAL_CODEX.md): end-to-end harness that runs the real Codex CLI against deterministic issues
|
|
271
|
+
- [`WORKFLOW.md`](WORKFLOW.md): the workflow configuration used by this repository
|
|
272
|
+
|
|
273
|
+
## Contributor Setup
|
|
274
|
+
|
|
275
|
+
If you are contributing from a repo checkout, run the root install once:
|
|
276
|
+
|
|
277
|
+
```bash
|
|
278
|
+
pnpm install
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
That single install:
|
|
282
|
+
|
|
283
|
+
- installs the repo-managed Git hooks through Husky
|
|
284
|
+
- bootstraps the shared `pnpm` workspace across `apps/frontend` and `apps/website`
|
|
285
|
+
- makes the root workspace scripts available for common local tasks
|
|
286
|
+
|
|
287
|
+
If you want shared cache hits across machines, Turborepo supports Remote Cache out of the box:
|
|
288
|
+
|
|
289
|
+
```bash
|
|
290
|
+
pnpm exec turbo login
|
|
291
|
+
pnpm exec turbo link
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
The CI workflow is already wired to use `TURBO_TEAM` and `TURBO_TOKEN` when those GitHub variables and secrets are configured.
|
|
295
|
+
|
|
296
|
+
Common contributor commands:
|
|
297
|
+
|
|
298
|
+
```bash
|
|
299
|
+
make build
|
|
300
|
+
make test
|
|
301
|
+
pnpm verify
|
|
302
|
+
pnpm run website:dev
|
|
303
|
+
pnpm run website:check
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
Repo-managed Git hooks stay targeted:
|
|
307
|
+
|
|
308
|
+
- staged Go changes run package-scoped Go tests
|
|
309
|
+
- staged frontend changes run frontend lint and tests
|
|
310
|
+
- staged website changes run Astro checks and website tests
|
|
311
|
+
- staged workspace and hook changes run the full `pnpm verify` suite
|
|
312
|
+
- `pnpm verify` runs the JS lint/test/check/smoke flow, npm packaging unit test, and Go build/test/coverage/race gates
|
|
313
|
+
- package-scoped root commands such as `pnpm run frontend:test` and `pnpm run website:build` now go through `turbo --filter=...` so they benefit from task caching too
|
|
314
|
+
- `pre-push` now runs the same full `pnpm verify` command
|
|
315
|
+
|
|
316
|
+
## License
|
|
317
|
+
|
|
318
|
+
MIT
|
package/lib/maestro
ADDED
|
Binary file
|
package/package.json
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@olhapi/maestro-linux-arm64-gnu",
|
|
3
|
+
"version": "0.1.0-rc.1",
|
|
4
|
+
"description": "Maestro CLI binary for Linux arm64 (glibc)",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"files": [
|
|
7
|
+
"lib/maestro",
|
|
8
|
+
"LICENSE",
|
|
9
|
+
"README.md"
|
|
10
|
+
],
|
|
11
|
+
"os": [
|
|
12
|
+
"linux"
|
|
13
|
+
],
|
|
14
|
+
"cpu": [
|
|
15
|
+
"arm64"
|
|
16
|
+
], "libc": [
|
|
17
|
+
"glibc"
|
|
18
|
+
],
|
|
19
|
+
"repository": {
|
|
20
|
+
"type": "git",
|
|
21
|
+
"url": "git+https://github.com/olhapi/maestro.git"
|
|
22
|
+
},
|
|
23
|
+
"homepage": "https://github.com/olhapi/maestro",
|
|
24
|
+
"bugs": {
|
|
25
|
+
"url": "https://github.com/olhapi/maestro/issues"
|
|
26
|
+
},
|
|
27
|
+
"keywords": [
|
|
28
|
+
"maestro",
|
|
29
|
+
"cli",
|
|
30
|
+
"go",
|
|
31
|
+
"mcp",
|
|
32
|
+
"orchestration"
|
|
33
|
+
],
|
|
34
|
+
"publishConfig": {
|
|
35
|
+
"access": "public"
|
|
36
|
+
}
|
|
37
|
+
}
|