omnilane 0.8.3 → 0.9.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/README.ko.md CHANGED
@@ -21,105 +21,55 @@
21
21
 
22
22
  ---
23
23
 
24
- ## v0.8.3 새 기능
25
-
26
- - **MCP 서버** — `omnilane mcp` 는 의존성 없는 stdio MCP 서버를 시작하여,
27
- MCP 지원 호스트(Claude Code, Codex, Gemini CLI, Cursor, OpenCode 등)가
28
- 스킬 설치 없이 omnilane 을 발견하고 호출할 수 있습니다: 도구는 `route`,
29
- `jobs_status`, `jobs_result`, `list_lanes`. `route` 는 읽기 전용 advise 가
30
- 기본값이며, work 모드는 명시적 workdir 이 필요합니다.
24
+ ## 👋 처음이신가요?
31
25
 
32
- ## v0.8.2 기능
26
+ 이미 AI 코딩 어시스턴트——**Claude Code, Codex, Cursor, Gemini CLI** 같은——를 쓰고
27
+ 계시죠. 각각은 한 번에 하나의 AI 모델과 대화하며, "어떤 작업에 어떤 모델이 최선인가"는
28
+ 당신 몫으로 남습니다.
33
29
 
34
- - **`openrouter` vendor** `curl`과 `OPENROUTER_API_KEY`만으로
35
- OpenRouter API에 직접 디스패치합니다. 어떤 omnilane 설치에서도 수백 개의
36
- 호스팅 모델에 접근할 있으며 코딩 에이전트 CLI를 추가로 설치할 필요가
37
- 없습니다. advise/consult 전용(파일 편집 불가, work 모드는 명확한 오류로
38
- 안내)이며 모델 slug는 필수입니다. 예:
39
- `dispatch.sh --vendor openrouter --model anthropic/claude-sonnet-5 consult "..."`
40
- - **`opencode` vendor** — 멀티 프로바이더 집합 CLI OpenCode를 통한
41
- 헤드리스 디스패치(`opencode run`). advise 모드는 내장 읽기 전용 `plan`
42
- 에이전트를 사용하고 work 모드는 `--auto`를 사용합니다. 기본
43
- `coding-overflow` 체인의 마지막 폴백으로 추가되었습니다.
44
-
45
- ## v0.8.1 새 기능
46
-
47
- - **Claude Code 플러그인이 라우팅 리마인더를 자동 로드** — 플러그인에
48
- `SessionStart` 훅(`hooks/hooks.json`)이 포함되어 세션 시작 시
49
- (`startup|resume|clear`) 라우팅 리마인더를 자동 주입합니다.
50
- `~/.claude/CLAUDE.md` 수정 없이 플러그인 설치만으로 적용됩니다.
51
- 다른 CLI는 기존대로 `install.sh` 지침 파일 방식을 사용합니다.
30
+ **omnilane 대신 골라 줍니다.** 모든 작업을 그 일에 가장 강한(그리고 가장 저렴한) 모델로
31
+ 자동 라우팅합니다——어려운 코딩은 최고 코더에게, 간단한 확인은 빠르고 싼 모델에게, 긴 문서는
32
+ 컨텍스트 모델에게——전부 이미 결제 중인 구독과 API 키로. 기본값 그대로 쓰거나, 작은 설정
33
+ 파일 하나만 손보면 됩니다. 새로 관리할 대상이 늘지 않고(기존 도구 뒤에서 동작),
34
+ `./install.sh --uninstall` 깔끔히 제거됩니다.
52
35
 
53
- ## v0.8.0 새 기능
36
+ **[⬇ 60초 시작으로](#-60초-시작)**
54
37
 
55
- - **새 디스패치 벤더 2종** — `kimi`(Moonshot Kimi Code CLI)와
56
- `qwen`(Alibaba Qwen Code CLI)이 통일 runner 계약으로 합류:
57
- advise 는 읽기 전용, work 는 자동 승인, API 키 환경 변수를 제거해
58
- CLI 자체 구독 로그인을 사용, 빈 출력은 명시적 실패.
59
- `--vendor kimi|qwen` 으로 직접 지정할 수 있습니다.
60
- - **coding-overflow 폴백 체인** — 쿼터 안전 밸브가 grok → kimi → qwen
61
- → `off` 순으로 폴백해 세 벤더 중 하나만 설치돼 있어도 동작합니다.
62
- runner 는 페이크 바이너리로 계약 테스트 완료. 실제 모델 사용 보고를
63
- 환영합니다.
38
+ ## v0.9.1 기능
64
39
 
65
- ## v0.7.1 기능
40
+ - **수정**: `configure set` 이 더 이상 `routing.local.yaml` 수기 주석을
41
+ 삭제하지 않습니다. 자체 스탬프 줄과 교체 대상 레인만 다시 씁니다.
66
42
 
67
- - **라우팅 테이블 갱신(2026-07 모델 데이터)** — hardest-coding 1순위를
68
- GPT-5.6 Sol **max** 로 변경. Artificial Analysis Coding Agent Index v1.1 에서
69
- Sol (max) 이 80점으로 현행 최고를 기록해, 기존 「xhigh 가 max 보다 낫다」
70
- 스냅샷을 대체합니다.
71
- - **Claude 백업 강화** — hardest-coding 과 hard-judgment 의 Claude Opus 4.8
72
- 백업을 **xhigh** 로 변경. 어려운 작업과 장시간 작업에 extra effort 를
73
- 권장하는 Anthropic 공식 가이드를 따릅니다.
43
+ ## v0.9.0 기능
74
44
 
75
- ## v0.7.0 기능
45
+ - **OpenAI 호환 direct-API 벤더 5개 추가** — `deepseek`, `zai` (GLM), `mistral`,
46
+ `groq`, `cerebras` 가 `openrouter` 처럼 CLI 없는 레인으로 추가(curl 과
47
+ `<VENDOR>_API_KEY` 만 필요). `lib/common.sh` 레지스트리에 한 줄로 추가되며,
48
+ 모델 능력 비교는 [`docs/model-capabilities-2026-07.md`](docs/model-capabilities-2026-07.md) 참고.
49
+ - **Fish 셸 자동완성** — `omnilane completion fish | source`.
76
50
 
77
- - **디스패치를 먼저 미리보기** — `--dry-run` 은 완전히 해석된 실행 계획(vendor,
78
- 모델, 모드, 타임아웃, 부작용 판정)을 출력하며 모델 호출도 작업 상태 생성도
79
- 하지 않습니다.
80
- - **버전 있는 JSON 자동화** — `--list`/`--explain`/`--validate` 와
81
- `jobs list|status|result|stats` 에 `--json` 엔벨로프를 제공하고, 읽기 전용
82
- `jobs wait`, `jobs audit`, 결정적 manifest 를 갖춘 오프라인
83
- `omnilane release-audit` 게이트를 추가했습니다.
84
- - **로컬 작업을 끝까지 제어** — `jobs tail` 로 실시간 출력을 확인하고,
85
- `jobs retry` 로 완료된 작업을 fail-closed 로 재실행하며,
86
- `prune --older-than` 으로 오래된 작업을 정리합니다. `--help` 가 모든 명령을
87
- 다룹니다.
88
- - **설치와 자동완성을 안전하게** — `install.sh --check`/`--dry-run` 은 쓰기 없이
89
- 드리프트를 보고하고, `omnilane completion bash|zsh` 가 안전한 탭 완성을
90
- 제공하며, macOS 기본 Bash 3.2 크래시 5건을 수정했습니다.
91
-
92
- ## v0.6.0 새 기능
93
-
94
- - **라우팅을 오프라인으로 설명하고 검증** — `--explain` 으로 각 폴백 후보를
95
- 확인하고 `--validate` 로 전체 유효 라우팅 테이블을 검사합니다. 공급자를
96
- 호출하거나 잡 상태를 만들지 않습니다.
97
- - **로컬 상태를 기계 판독 데이터로 관찰** — 제한된 `jobs.sh stats` 집계와
98
- `omnilane doctor --json` 을 사용해 태스크나 결과 본문 노출 없이 자동화합니다.
99
- - **Live Board 에서 두 잡 비교** — 불러온 잡 하나를 메모리에만 존재하는 참조
100
- 스냅샷으로 고정하고 모델 경로와 공개 결과를 나란히 비교합니다.
101
- - **조용한 잠금 복구** — 소유자 파일이 확인과 읽기 사이에 사라져도 오해를 부르는
102
- 파일 없음 진단을 노출하지 않으며 fail-closed 동작을 유지합니다.
51
+ ## 60초 시작
103
52
 
104
- ## v0.5.1 기능
53
+ **가장 빠른 방법——npm 으로 설치:**
105
54
 
106
- - **Git 저장소 밖에서 Codex work 사용** — 일반 디렉터리를 계속 지원하며
107
- Omnilane `git init` 요구하거나 자동 실행하지 않습니다.
108
- - **비 Git 멈춤을 안전하게 종료** 전체 상한이 없으면 결정된 호출별 워치독을
109
- process group 퓨즈로 사용하고, 명시한 timeout 우선순위와 종료 코드 의미는
110
- 그대로 유지합니다.
111
- - **표시 버전을 신뢰 가능하게 유지** — `VERSION` 이 `omnilane --version` 과 두
112
- plugin manifest 를 통일하며 CI 가 변경 기록과 5개 언어 README 를 검사합니다.
55
+ ```bash
56
+ npm i -g omnilane # CLI 설치
57
+ omnilane route hardest-coding "간헐적으로 실패하는 auth 토큰 갱신 테스트 수정"
58
+ omnilane doctor # 사용 가능한 AI CLI / 확인
59
+ omnilane ui start # 선택: 브라우저에서 잡을 실시간 확인
60
+ ```
113
61
 
114
- ## 60초 시작
62
+ **또는 리포지토리 clone**(라우팅 테이블과 커스터마이즈용 스킬을 얻음):
115
63
 
116
64
  ```bash
117
65
  git clone https://github.com/Seraphim0916/omnilane && cd omnilane
118
66
  ./install.sh # CLI 감지, 스킬 연결, 당신의 언어로 대화
119
67
  omnilane route hardest-coding "간헐적으로 실패하는 auth 토큰 갱신 테스트 수정"
120
- omnilane ui start # 선택: 브라우저에서 잡을 실시간 확인
121
68
  ```
122
69
 
70
+ > 처음이신가요? 먼저 `omnilane doctor` 를 실행하세요. omnilane 이 지금 어떤 모델 CLI 와
71
+ > API 키에 접근할 수 있는지 알려 주어, 실제로 무엇이 실행될지 파악할 수 있습니다.
72
+
123
73
  ## 🧭 동작 방식
124
74
 
125
75
  omnilane 은 **어떤** agentic CLI 든 메인 루프가 서브태스크를 레인으로 분류하고,
@@ -147,6 +97,8 @@ flowchart LR
147
97
  고정하며 폴백하지 않습니다.
148
98
  - **`skills/omnilane/SKILL.md`** — 네 하네스 공용 스킬: 자기 모델을 파악하고,
149
99
  자기 레인은 직접 수행, 나머지는 디스패치.
100
+ - **`omnilane mcp`** — 같은 라우팅을 MCP stdio 서버로 제공.
101
+ 스킬 대신 MCP 로 통합하는 호스트용.
150
102
 
151
103
  <div align="center">
152
104
 
@@ -294,10 +246,13 @@ MCP 지원 호스트가 스킬 설치나 라우팅 리마인더 없이 omnilane
294
246
  }
295
247
  ```
296
248
 
297
- 서버는 `route`, `jobs_status`, `jobs_result`, `list_lanes` 를 제공합니다.
249
+ 서버는 `route` 와 함께 읽기 전용 조회 도구 `list_lanes`, `explain`, `validate`, `dry_run`, `jobs_list`, `jobs_status`, `jobs_result`, `jobs_stats`, `jobs_audit`, `doctor` 를 제공합니다.
298
250
  `route` 의 기본값은 읽기 전용 `advise` 모드이며, `work` 를 선택한 호출은
299
251
  명시적 `workdir` 을 함께 제공해야 합니다.
300
252
 
253
+ 실행에 필요한 것은 Node.js 뿐입니다(npm 패키지 없음). npm 을 선호하면
254
+ `npm install -g omnilane` 으로 MCP 서버가 포함된 CLI 를 설치할 수 있습니다.
255
+
301
256
  ## ⚙️ 사용자 설정
302
257
 
303
258
  세 계층, 모두 선택 사항:
@@ -322,6 +277,8 @@ scripts/dispatch.sh --list # 실효 테이블(폴백 해석 주석 포함)
322
277
  ```
323
278
  eval "$(omnilane completion bash)" # 현재 Bash 에서 완성 활성화
324
279
  source <(omnilane completion zsh) # 현재 Zsh 에서 완성 활성화
280
+ omnilane completion fish | source # 현재 Fish 에서 완성 활성화
281
+ omnilane mcp # MCP stdio 서버(Node.js 필요)
325
282
  omnilane release-audit [--target VERSION] [--json] # 오프라인 읽기 전용 릴리스 게이트
326
283
  omnilane ui start # 로컬 Live UI 를 시작하거나 재사용하고 URL 표시
327
284
  omnilane ui status # Live UI 실행 상태 표시
@@ -335,11 +292,15 @@ dispatch.sh [--json] --list [--json]
335
292
  dispatch.sh [--json] --explain LANE [--json] # 후보별 라우팅 결정을 오프라인 설명
336
293
  dispatch.sh [--json] --validate [--json] # 공급자 호출 없이 실효 라우팅 검사
337
294
  jobs.sh [--json] {list | status ID | result ID} # JSON은 본문 없이 메타데이터만 반환
295
+ jobs.sh [--json] list [--lane L] [--vendor V] [--status running|done] # 목록 필터
338
296
  jobs.sh wait ID [--timeout N] # 작업 종료값, 124 시간 초과, 125 작업자 소실
339
- jobs.sh [--json] stats [--last N] # 로컬 성공률과 라우팅 집계
297
+ jobs.sh cancel ID # 실행 작업 중지: 그룹 SIGTERM 후 SIGKILL
298
+ jobs.sh rm ID # 완료/종료 작업 1건 삭제(실행 중이면 거부)
299
+ jobs.sh [--json] stats [--last N] [--lane L] [--vendor V] # 로컬 성공률과 라우팅 집계
340
300
  jobs.sh audit [--last N] [--json] # 읽기 전용 작업 무결성/개인정보 검사
341
301
  jobs.sh prune [--keep N] [--apply] # 기본은 미리보기이며 완료된 작업만 정리
342
302
  configure.sh # 대화형 레인 메뉴
303
+ configure.sh set|get|unset|list|diff LANE [SPEC] # routing.local.yaml 비대화식 편집/확인
343
304
  ```
344
305
 
345
306
  종료 코드: `2` 사용법 오류(잘못된 벤더 또는 지정 벤더가 레인에 없는 경우 포함),
@@ -405,12 +366,110 @@ CLI 를 사용할 수 없음, `5` 1라운드 성공 투표자 부족, `6` 2라
405
366
  process group을 정리합니다. Omnilane 은 `git init` 을 자동 실행하지 않으며 저장소
406
367
  생성을 요구하지도 않습니다.
407
368
 
369
+ ## 📜 릴리스 기록
370
+
371
+ <details>
372
+ <summary>이전 릴리스(v0.8.3 이하)</summary>
373
+
374
+ ## v0.8.3 새 기능
375
+
376
+ - **MCP 서버** — `omnilane mcp` 는 의존성 없는 stdio MCP 서버를 시작하여,
377
+ MCP 지원 호스트(Claude Code, Codex, Gemini CLI, Cursor, OpenCode 등)가
378
+ 스킬 설치 없이 omnilane 을 발견하고 호출할 수 있습니다: 도구는 `route`,
379
+ `jobs_status`, `jobs_result`, `list_lanes`. `route` 는 읽기 전용 advise 가
380
+ 기본값이며, work 모드는 명시적 workdir 이 필요합니다.
381
+
382
+ ## v0.8.2 새 기능
383
+
384
+ - **`openrouter` vendor** — `curl`과 `OPENROUTER_API_KEY`만으로
385
+ OpenRouter API에 직접 디스패치합니다. 어떤 omnilane 설치에서도 수백 개의
386
+ 호스팅 모델에 접근할 수 있으며 코딩 에이전트 CLI를 추가로 설치할 필요가
387
+ 없습니다. advise/consult 전용(파일 편집 불가, work 모드는 명확한 오류로
388
+ 안내)이며 모델 slug는 필수입니다. 예:
389
+ `dispatch.sh --vendor openrouter --model anthropic/claude-sonnet-5 consult "..."`
390
+ - **`opencode` vendor** — 멀티 프로바이더 집합 CLI OpenCode를 통한
391
+ 헤드리스 디스패치(`opencode run`). advise 모드는 내장 읽기 전용 `plan`
392
+ 에이전트를 사용하고 work 모드는 `--auto`를 사용합니다. 기본
393
+ `coding-overflow` 체인의 마지막 폴백으로 추가되었습니다.
394
+
395
+ ## v0.8.1 새 기능
396
+
397
+ - **Claude Code 플러그인이 라우팅 리마인더를 자동 로드** — 플러그인에
398
+ `SessionStart` 훅(`hooks/hooks.json`)이 포함되어 세션 시작 시
399
+ (`startup|resume|clear`) 라우팅 리마인더를 자동 주입합니다.
400
+ `~/.claude/CLAUDE.md` 수정 없이 플러그인 설치만으로 적용됩니다.
401
+ 다른 CLI는 기존대로 `install.sh` 지침 파일 방식을 사용합니다.
402
+
403
+ ## v0.8.0 새 기능
404
+
405
+ - **새 디스패치 벤더 2종** — `kimi`(Moonshot Kimi Code CLI)와
406
+ `qwen`(Alibaba Qwen Code CLI)이 통일 runner 계약으로 합류:
407
+ advise 는 읽기 전용, work 는 자동 승인, API 키 환경 변수를 제거해
408
+ CLI 자체 구독 로그인을 사용, 빈 출력은 명시적 실패.
409
+ `--vendor kimi|qwen` 으로 직접 지정할 수 있습니다.
410
+ - **coding-overflow 폴백 체인** — 쿼터 안전 밸브가 grok → kimi → qwen
411
+ → `off` 순으로 폴백해 세 벤더 중 하나만 설치돼 있어도 동작합니다.
412
+ runner 는 페이크 바이너리로 계약 테스트 완료. 실제 모델 사용 보고를
413
+ 환영합니다.
414
+
415
+ ## v0.7.1 새 기능
416
+
417
+ - **라우팅 테이블 갱신(2026-07 모델 데이터)** — hardest-coding 1순위를
418
+ GPT-5.6 Sol **max** 로 변경. Artificial Analysis Coding Agent Index v1.1 에서
419
+ Sol (max) 이 80점으로 현행 최고를 기록해, 기존 「xhigh 가 max 보다 낫다」
420
+ 스냅샷을 대체합니다.
421
+ - **Claude 백업 강화** — hardest-coding 과 hard-judgment 의 Claude Opus 4.8
422
+ 백업을 **xhigh** 로 변경. 어려운 작업과 장시간 작업에 extra effort 를
423
+ 권장하는 Anthropic 공식 가이드를 따릅니다.
424
+
425
+ ## v0.7.0 새 기능
426
+
427
+ - **디스패치를 먼저 미리보기** — `--dry-run` 은 완전히 해석된 실행 계획(vendor,
428
+ 모델, 모드, 타임아웃, 부작용 판정)을 출력하며 모델 호출도 작업 상태 생성도
429
+ 하지 않습니다.
430
+ - **버전 있는 JSON 자동화** — `--list`/`--explain`/`--validate` 와
431
+ `jobs list|status|result|stats` 에 `--json` 엔벨로프를 제공하고, 읽기 전용
432
+ `jobs wait`, `jobs audit`, 결정적 manifest 를 갖춘 오프라인
433
+ `omnilane release-audit` 게이트를 추가했습니다.
434
+ - **로컬 작업을 끝까지 제어** — `jobs tail` 로 실시간 출력을 확인하고,
435
+ `jobs retry` 로 완료된 작업을 fail-closed 로 재실행하며,
436
+ `prune --older-than` 으로 오래된 작업을 정리합니다. `--help` 가 모든 명령을
437
+ 다룹니다.
438
+ - **설치와 자동완성을 안전하게** — `install.sh --check`/`--dry-run` 은 쓰기 없이
439
+ 드리프트를 보고하고, `omnilane completion bash|zsh` 가 안전한 탭 완성을
440
+ 제공하며, macOS 기본 Bash 3.2 크래시 5건을 수정했습니다.
441
+
442
+ ## v0.6.0 새 기능
443
+
444
+ - **라우팅을 오프라인으로 설명하고 검증** — `--explain` 으로 각 폴백 후보를
445
+ 확인하고 `--validate` 로 전체 유효 라우팅 테이블을 검사합니다. 공급자를
446
+ 호출하거나 잡 상태를 만들지 않습니다.
447
+ - **로컬 상태를 기계 판독 데이터로 관찰** — 제한된 `jobs.sh stats` 집계와
448
+ `omnilane doctor --json` 을 사용해 태스크나 결과 본문 노출 없이 자동화합니다.
449
+ - **Live Board 에서 두 잡 비교** — 불러온 잡 하나를 메모리에만 존재하는 참조
450
+ 스냅샷으로 고정하고 모델 경로와 공개 결과를 나란히 비교합니다.
451
+ - **조용한 잠금 복구** — 소유자 파일이 확인과 읽기 사이에 사라져도 오해를 부르는
452
+ 파일 없음 진단을 노출하지 않으며 fail-closed 동작을 유지합니다.
453
+
454
+ ## v0.5.1 새 기능
455
+
456
+ - **Git 저장소 밖에서 Codex work 사용** — 일반 디렉터리를 계속 지원하며
457
+ Omnilane 은 `git init` 을 요구하거나 자동 실행하지 않습니다.
458
+ - **비 Git 멈춤을 안전하게 종료** — 전체 상한이 없으면 결정된 호출별 워치독을
459
+ process group 퓨즈로 사용하고, 명시한 timeout 우선순위와 종료 코드 의미는
460
+ 그대로 유지합니다.
461
+ - **표시 버전을 신뢰 가능하게 유지** — `VERSION` 이 `omnilane --version` 과 두
462
+ plugin manifest 를 통일하며 CI 가 변경 기록과 5개 언어 README 를 검사합니다.
463
+
464
+ </details>
465
+
408
466
  ## 🌱 상태
409
467
 
410
- v0.8.3 8개의 디스패치 벤더를 갖춥니다——4개의 하네스 네이티브(codex,
468
+ omnilane 13개의 디스패치 벤더를 갖춥니다——4개의 하네스 네이티브(codex,
411
469
  claude, grok, gemini), 3개의 집합/오버플로 CLI(kimi, qwen, opencode), 그리고
412
- CLI 가 필요 없는 `openrouter` 직접 API 벤더——모두 통일 runner 계약과 계약
413
- 테스트를 갖추었고, Claude Code `SessionStart` 자동 리마인더도 포함합니다.
470
+ CLI 가 필요 없는 OpenAI 호환 direct-API 벤더 6개(openrouter, deepseek, zai,
471
+ mistral, groq, cerebras)——모두 통일 runner 계약과 계약 테스트를 갖추었고,
472
+ Claude Code `SessionStart` 자동 리마인더와 MCP stdio 서버(`omnilane mcp`)도 포함합니다.
414
473
  kimi, qwen, opencode, openrouter 의 runner 는 페이크 바이너리로 계약 테스트를
415
474
  마쳤습니다. 실제 모델 사용 보고를 환영합니다. Grok/Antigravity 커맨드 셸
416
475
  동작은 CLI 버전에 따라 달라질 수 있습니다. issue 와 PR 환영합니다.
package/README.md CHANGED
@@ -21,106 +21,57 @@ or any hosted model via OpenRouter — on the subscriptions you already pay for,
21
21
 
22
22
  ---
23
23
 
24
- ## What's new in v0.8.3
25
-
26
- - **MCP server** — `omnilane mcp` starts a zero-dependency stdio MCP server,
27
- so any MCP-capable host (Claude Code, Codex, Gemini CLI, Cursor, OpenCode…)
28
- can discover and call omnilane without installing the skill: tools `route`,
29
- `jobs_status`, `jobs_result`, and `list_lanes`. `route` defaults to
30
- read-only advise mode; work mode requires an explicit workdir.
31
-
32
- ## What's new in v0.8.2
33
-
34
- - **`openrouter` vendor** — dispatch straight to the OpenRouter API with
35
- nothing but `curl` and an `OPENROUTER_API_KEY`: hundreds of hosted models
36
- become reachable from any omnilane install, no coding-agent CLI required.
37
- Advise/consult only (it cannot edit files; work mode fails with guidance)
38
- and the model slug is mandatory, e.g.
39
- `dispatch.sh --vendor openrouter --model anthropic/claude-sonnet-5 consult "..."`.
40
- - **`opencode` vendor** — headless dispatch through the OpenCode
41
- multi-provider aggregator CLI (`opencode run`). Advise mode pins OpenCode's
42
- built-in read-only `plan` agent; work mode uses `--auto`. Joins the default
43
- `coding-overflow` chain as its last fallback.
44
-
45
- ## What's new in v0.8.1
46
-
47
- - **Claude Code plugin auto-loads the routing reminder** — the plugin now
48
- ships a `SessionStart` hook (`hooks/hooks.json`) that injects the routing
49
- reminder at session open (`startup|resume|clear`), so plugin installs get
50
- the persistent reminder with no edit to `~/.claude/CLAUDE.md`. The
51
- `install.sh` instruction-file reminder still covers the other CLIs.
24
+ ## 👋 New here?
52
25
 
53
- ## What's new in v0.8.0
26
+ You already drive an AI coding assistant — **Claude Code, Codex, Cursor, Gemini
27
+ CLI**, and the like. Each one talks to a single AI model, and picking the best
28
+ model for each task is left to you.
54
29
 
55
- - **Two new dispatch vendors** `kimi` (Moonshot Kimi Code CLI) and `qwen`
56
- (Alibaba Qwen Code CLI) join the vendor set with the uniform runner
57
- contract: advise stays read-only, work auto-approves, API-key env is
58
- stripped so the CLIs use their own subscription logins, and empty output
59
- is a loud failure. Pin them with `--vendor kimi|qwen`.
60
- - **coding-overflow grows a chain** — the quota relief valve now falls back
61
- grok → kimi → qwen before `off`, so it works with any one of the three
62
- vendors installed. Runners are contract-tested against fake binaries;
63
- real-model reports welcome.
30
+ **omnilane picks for you.** For every piece of work it routes the task to the
31
+ model that is best (and cheapest) for it tough coding to a top coder, quick
32
+ checks to a fast cheap model, long documents to a big-context model — all on the
33
+ subscriptions and API keys you already pay for. Use the built-in defaults, or
34
+ tweak one small file. Nothing new to babysit (it runs behind your existing tool),
35
+ and `./install.sh --uninstall` removes it cleanly.
64
36
 
65
- ## What's new in v0.7.1
37
+ **[⬇ Jump to the 60-second start](#-60-second-start)**
66
38
 
67
- - **Routing refresh (2026-07 model data)** — hardest-coding now dispatches
68
- GPT-5.6 Sol at **max** effort: Artificial Analysis Coding Agent Index v1.1
69
- scores Sol (max) at 80, the current state of the art, retiring the older
70
- xhigh-beats-max snapshot.
71
- - **Claude backups sharpened** — the Claude Opus 4.8 fallback on
72
- hardest-coding and hard-judgment moves to **xhigh** effort, following
73
- Anthropic's guidance to use extra effort for difficult tasks and
74
- long-running work.
39
+ ## What's new in v0.9.1
75
40
 
76
- ## What's new in v0.7.0
41
+ - **Fix:** `configure set` no longer deletes hand-written comments from
42
+ `routing.local.yaml` — it rewrites only its own stamp header and the lane
43
+ being replaced.
77
44
 
78
- - **Preview any dispatch first** — `--dry-run` prints the fully resolved plan
79
- (vendor, model, mode, timeouts, side-effect decision) with no provider call
80
- and no job state.
81
- - **Automate with versioned JSON** — one `--json` envelope for `--list`,
82
- `--explain`, `--validate`, and `jobs list|status|result|stats`, plus
83
- read-only `jobs wait`, `jobs audit`, and an offline `omnilane release-audit`
84
- gate with a deterministic manifest.
85
- - **Drive local jobs end to end** — `jobs tail` peeks at live output,
86
- `jobs retry` re-dispatches a completed job fail-closed,
87
- `prune --older-than` ages out old jobs, and `--help` covers every command.
88
- - **Install and complete safely** — `install.sh --check`/`--dry-run` report
89
- drift without writing, `omnilane completion bash|zsh` ships safe tab
90
- completion, and five macOS stock Bash 3.2 crashes are fixed.
45
+ ## What's new in v0.9.0
91
46
 
92
- ## What's new in v0.6.0
47
+ - **Five OpenAI-compatible direct-API vendors** — `deepseek`, `zai` (GLM),
48
+ `mistral`, `groq`, and `cerebras` join `openrouter` as CLI-free lanes (curl +
49
+ a `<VENDOR>_API_KEY`). A one-line `lib/common.sh` registry entry adds each;
50
+ see [`docs/model-capabilities-2026-07.md`](docs/model-capabilities-2026-07.md).
51
+ - **Fish shell completion** — `omnilane completion fish | source`.
93
52
 
94
- - **Explain and validate routes offline** — inspect every fallback candidate
95
- with `--explain`, or lint the complete effective table with `--validate`,
96
- without invoking a provider or creating job state.
97
- - **Inspect local health and outcomes** — bounded `jobs.sh stats` aggregates and
98
- `omnilane doctor --json` make local automation observable without exposing
99
- task or result bodies.
100
- - **Compare runs in Live Board** — pin one loaded job as a memory-only reference
101
- and compare its model path and public result with the current selection.
102
- - **Keep lock recovery quiet** — transient owner-file read races no longer leak
103
- misleading missing-file diagnostics.
53
+ ## 60-second start
104
54
 
105
- ## What's new in v0.5.1
55
+ **The quick way install from npm:**
106
56
 
107
- - **Use Codex work outside Git** — ordinary directories remain supported;
108
- Omnilane never requires or runs `git init`.
109
- - **Stop non-Git hangs cleanly** — the resolved per-call watchdog becomes an
110
- automatic process-group fuse when no whole-job timeout was configured, while
111
- explicit timeout precedence and exit semantics remain intact.
112
- - **Trust the displayed version** — `VERSION` now drives `omnilane --version`
113
- and both plugin manifests, with CI checking the changelog and all five READMEs.
57
+ ```bash
58
+ npm i -g omnilane # install the CLI
59
+ omnilane route hardest-coding "fix the flaky auth token refresh"
60
+ omnilane doctor # see which AI CLIs / keys you have
61
+ omnilane ui start # optional: watch jobs live in your browser
62
+ ```
114
63
 
115
- ## 60-second start
64
+ **Or clone the repo** (gets you the routing table and skill to customise):
116
65
 
117
66
  ```bash
118
67
  git clone https://github.com/Seraphim0916/omnilane && cd omnilane
119
68
  ./install.sh # finds your CLIs, links the skill, speaks your language
120
69
  omnilane route hardest-coding "fix the flaky auth token refresh"
121
- omnilane ui start # optional: watch jobs live in your browser
122
70
  ```
123
71
 
72
+ > New to this? Run `omnilane doctor` first — it tells you which model CLIs and
73
+ > API keys omnilane can already reach, so you know what will actually run.
74
+
124
75
  ## 🧭 How it works
125
76
 
126
77
  omnilane lets the main loop of **any** agentic CLI classify subtasks into
@@ -149,6 +100,8 @@ flowchart LR
149
100
  vendor without fallback.
150
101
  - **`skills/omnilane/SKILL.md`** — a single skill every harness can load:
151
102
  identify your own model, self-execute your lane, dispatch the rest.
103
+ - **`omnilane mcp`** — the same routing surface as an MCP stdio server,
104
+ for hosts that integrate via MCP instead of skills.
152
105
 
153
106
  <div align="center">
154
107
 
@@ -301,10 +254,15 @@ adding a routing reminder. Configure the host to launch the installed CLI:
301
254
  }
302
255
  ```
303
256
 
304
- The server exposes `route`, `jobs_status`, `jobs_result`, and `list_lanes`.
305
- `route` defaults to read-only `advise` mode. Calls that select `work` must also
257
+ The server exposes `route` plus read-only introspection: `list_lanes`,
258
+ `explain`, `validate`, `dry_run`, `jobs_list`, `jobs_status`, `jobs_result`,
259
+ `jobs_stats`, `jobs_audit`, and `doctor`. `route` defaults to read-only `advise` mode. Calls that select `work` must also
306
260
  provide an explicit `workdir`.
307
261
 
262
+ Node.js is the only runtime requirement (no npm packages). If you prefer
263
+ npm, `npm install -g omnilane` installs the CLI with the MCP server
264
+ included.
265
+
308
266
  ## ⚙️ Configure
309
267
 
310
268
  Three layers, all optional:
@@ -314,6 +272,9 @@ Three layers, all optional:
314
272
  future models), and writes the result to `~/.omnilane/routing.local.yaml`.
315
273
  It intentionally skips the multi-vendor `consult` lane; edit that one by
316
274
  hand if needed. `install.sh` offers to run the menu at the end of a normal install.
275
+ For scripting, `configure set|get|unset|list|diff LANE [SPEC]` edits or inspects the same file
276
+ without a tty — `set` validates the lane and rejects an unsafe or structurally
277
+ invalid spec, rolling back on failure.
317
278
  2. **`~/.omnilane/routing.local.yaml`** — hand-edited overrides, same format
318
279
  as `routing.yaml`; local lines win. See `routing.local.yaml.example`.
319
280
  3. **`~/.omnilane/local.sh`** — per-machine binaries, proxies, auth wrappers;
@@ -332,6 +293,8 @@ omnilane list | route … | jobs … | configure # global wrapper, works anywh
332
293
  # (install.sh links it into ~/.local/bin)
333
294
  eval "$(omnilane completion bash)" # enable Bash completion for this shell
334
295
  source <(omnilane completion zsh) # enable Zsh completion for this shell
296
+ omnilane completion fish | source # enable Fish completion for this shell
297
+ omnilane mcp # MCP stdio server (needs Node.js)
335
298
  omnilane release-audit [--target VERSION] [--json] # offline, read-only release gate
336
299
  omnilane ui start # start/reuse the local Live UI; print its URL
337
300
  omnilane ui status # report whether the Live UI is running
@@ -345,11 +308,15 @@ dispatch.sh [--json] --list [--json]
345
308
  dispatch.sh [--json] --explain LANE [--json] # offline candidate-by-candidate decision trace
346
309
  dispatch.sh [--json] --validate [--json] # lint effective routing; no provider calls
347
310
  jobs.sh [--json] {list | status ID | result ID} # JSON result reports metadata, never bodies
311
+ jobs.sh [--json] list [--lane L] [--vendor V] [--status running|done] # filter the listing
348
312
  jobs.sh wait ID [--timeout N] # job exit; 124 timeout; 125 dead worker
349
- jobs.sh [--json] stats [--last N] # local success and routing aggregates
313
+ jobs.sh cancel ID # stop a running job: group SIGTERM, then SIGKILL
314
+ jobs.sh rm ID # delete one finished/dead job (refuses a running job)
315
+ jobs.sh [--json] stats [--last N] [--lane L] [--vendor V] # local success and routing aggregates
350
316
  jobs.sh audit [--last N] [--json] # read-only job integrity/privacy check
351
317
  jobs.sh prune [--keep N] [--apply] # preview by default; completed jobs only
352
318
  configure.sh # interactive lane menu
319
+ configure.sh set|get|unset|list|diff LANE [SPEC] # script/inspect routing.local.yaml, no tty
353
320
  ```
354
321
 
355
322
  **Big decisions can get a panel, not a person.** The `arbitrate` lane ships
@@ -437,13 +404,119 @@ configurator and `routing.local.yaml` exist so you can disagree.
437
404
  a Git worktree, so the automatic fuse above bounds that case and cleans the
438
405
  supervised process group. Omnilane neither initializes nor requires a repository.
439
406
 
407
+ ## 📜 Release history
408
+
409
+ <details>
410
+ <summary>Older releases (v0.8.3 and earlier)</summary>
411
+
412
+ ## What's new in v0.8.3
413
+
414
+ - **MCP server** — `omnilane mcp` starts a zero-dependency stdio MCP server,
415
+ so any MCP-capable host (Claude Code, Codex, Gemini CLI, Cursor, OpenCode…)
416
+ can discover and call omnilane without installing the skill: tools `route`,
417
+ `jobs_status`, `jobs_result`, and `list_lanes`. `route` defaults to
418
+ read-only advise mode; work mode requires an explicit workdir.
419
+
420
+ ## What's new in v0.8.2
421
+
422
+ - **`openrouter` vendor** — dispatch straight to the OpenRouter API with
423
+ nothing but `curl` and an `OPENROUTER_API_KEY`: hundreds of hosted models
424
+ become reachable from any omnilane install, no coding-agent CLI required.
425
+ Advise/consult only (it cannot edit files; work mode fails with guidance)
426
+ and the model slug is mandatory, e.g.
427
+ `dispatch.sh --vendor openrouter --model anthropic/claude-sonnet-5 consult "..."`.
428
+ - **`deepseek`, `zai`, `mistral`, `groq`, `cerebras` vendors** — the same
429
+ CLI-free direct-API path as `openrouter`, for OpenAI-compatible providers:
430
+ DeepSeek, Z.ai GLM, Mistral, Groq, and Cerebras. Each needs only `curl` and
431
+ its `<VENDOR>_API_KEY`; advise/consult only. A one-line `lib/common.sh`
432
+ registry entry defines each endpoint, key env, and default model. See
433
+ [`docs/model-capabilities-2026-07.md`](docs/model-capabilities-2026-07.md).
434
+ - **`opencode` vendor** — headless dispatch through the OpenCode
435
+ multi-provider aggregator CLI (`opencode run`). Advise mode pins OpenCode's
436
+ built-in read-only `plan` agent; work mode uses `--auto`. Joins the default
437
+ `coding-overflow` chain as its last fallback.
438
+
439
+ ## What's new in v0.8.1
440
+
441
+ - **Claude Code plugin auto-loads the routing reminder** — the plugin now
442
+ ships a `SessionStart` hook (`hooks/hooks.json`) that injects the routing
443
+ reminder at session open (`startup|resume|clear`), so plugin installs get
444
+ the persistent reminder with no edit to `~/.claude/CLAUDE.md`. The
445
+ `install.sh` instruction-file reminder still covers the other CLIs.
446
+
447
+ ## What's new in v0.8.0
448
+
449
+ - **Two new dispatch vendors** — `kimi` (Moonshot Kimi Code CLI) and `qwen`
450
+ (Alibaba Qwen Code CLI) join the vendor set with the uniform runner
451
+ contract: advise stays read-only, work auto-approves, API-key env is
452
+ stripped so the CLIs use their own subscription logins, and empty output
453
+ is a loud failure. Pin them with `--vendor kimi|qwen`.
454
+ - **coding-overflow grows a chain** — the quota relief valve now falls back
455
+ grok → kimi → qwen before `off`, so it works with any one of the three
456
+ vendors installed. Runners are contract-tested against fake binaries;
457
+ real-model reports welcome.
458
+
459
+ ## What's new in v0.7.1
460
+
461
+ - **Routing refresh (2026-07 model data)** — hardest-coding now dispatches
462
+ GPT-5.6 Sol at **max** effort: Artificial Analysis Coding Agent Index v1.1
463
+ scores Sol (max) at 80, the current state of the art, retiring the older
464
+ xhigh-beats-max snapshot.
465
+ - **Claude backups sharpened** — the Claude Opus 4.8 fallback on
466
+ hardest-coding and hard-judgment moves to **xhigh** effort, following
467
+ Anthropic's guidance to use extra effort for difficult tasks and
468
+ long-running work.
469
+
470
+ ## What's new in v0.7.0
471
+
472
+ - **Preview any dispatch first** — `--dry-run` prints the fully resolved plan
473
+ (vendor, model, mode, timeouts, side-effect decision) with no provider call
474
+ and no job state.
475
+ - **Automate with versioned JSON** — one `--json` envelope for `--list`,
476
+ `--explain`, `--validate`, and `jobs list|status|result|stats`, plus
477
+ read-only `jobs wait`, `jobs audit`, and an offline `omnilane release-audit`
478
+ gate with a deterministic manifest.
479
+ - **Drive local jobs end to end** — `jobs tail` peeks at live output,
480
+ `jobs retry` re-dispatches a completed job fail-closed,
481
+ `prune --older-than` ages out old jobs, and `--help` covers every command.
482
+ - **Install and complete safely** — `install.sh --check`/`--dry-run` report
483
+ drift without writing, `omnilane completion bash|zsh` ships safe tab
484
+ completion, and five macOS stock Bash 3.2 crashes are fixed.
485
+
486
+ ## What's new in v0.6.0
487
+
488
+ - **Explain and validate routes offline** — inspect every fallback candidate
489
+ with `--explain`, or lint the complete effective table with `--validate`,
490
+ without invoking a provider or creating job state.
491
+ - **Inspect local health and outcomes** — bounded `jobs.sh stats` aggregates and
492
+ `omnilane doctor --json` make local automation observable without exposing
493
+ task or result bodies.
494
+ - **Compare runs in Live Board** — pin one loaded job as a memory-only reference
495
+ and compare its model path and public result with the current selection.
496
+ - **Keep lock recovery quiet** — transient owner-file read races no longer leak
497
+ misleading missing-file diagnostics.
498
+
499
+ ## What's new in v0.5.1
500
+
501
+ - **Use Codex work outside Git** — ordinary directories remain supported;
502
+ Omnilane never requires or runs `git init`.
503
+ - **Stop non-Git hangs cleanly** — the resolved per-call watchdog becomes an
504
+ automatic process-group fuse when no whole-job timeout was configured, while
505
+ explicit timeout precedence and exit semantics remain intact.
506
+ - **Trust the displayed version** — `VERSION` now drives `omnilane --version`
507
+ and both plugin manifests, with CI checking the changelog and all five READMEs.
508
+
509
+ </details>
510
+
440
511
  ## 🌱 Status
441
512
 
442
- v0.8.3 spans eight dispatch vendors — four harness natives (codex, claude,
443
- grok, gemini), three aggregator/overflow CLIs (kimi, qwen, opencode), and the
444
- CLI-free `openrouter` direct-API vendor on the uniform runner contract with
445
- contract tests, plus the Claude Code `SessionStart` auto-reminder. kimi, qwen,
446
- opencode, and openrouter runners are contract-tested against fake binaries;
513
+ omnilane now spans thirteen dispatch vendors — four harness natives (codex,
514
+ claude, grok, gemini), three aggregator/overflow CLIs (kimi, qwen, opencode),
515
+ and six CLI-free OpenAI-compatible direct-API vendors (openrouter, deepseek,
516
+ zai, mistral, groq, cerebras) on the uniform runner contract with
517
+ contract tests, plus the Claude Code `SessionStart`
518
+ auto-reminder and an MCP stdio server surface (`omnilane mcp`). The direct-API
519
+ and aggregator runners are contract-tested against fake binaries;
447
520
  real-model reports welcome. Grok/Antigravity command-shell behavior may still
448
521
  vary across CLI versions. Issues and PRs welcome.
449
522