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/CHANGELOG.md +65 -1
- package/README.ja.md +147 -87
- package/README.ko.md +145 -86
- package/README.md +163 -90
- package/README.zh-CN.md +126 -78
- package/README.zh-TW.md +136 -74
- package/VERSION +1 -1
- package/bin/omnilane +4 -3
- package/bin/omnilane-mcp +291 -0
- package/completions/omnilane.fish +50 -0
- package/package.json +1 -1
- package/scripts/check.sh +125 -0
- package/scripts/configure.sh +151 -1
- package/scripts/dispatch.sh +4 -4
- package/scripts/doctor.sh +38 -0
- package/scripts/jobs.sh +132 -10
- package/scripts/lib/common.sh +57 -3
- package/scripts/runners/run-cerebras.sh +7 -0
- package/scripts/runners/run-deepseek.sh +7 -0
- package/scripts/runners/run-groq.sh +7 -0
- package/scripts/runners/run-mistral.sh +7 -0
- package/scripts/runners/run-openai-compat.sh +102 -0
- package/scripts/runners/run-openrouter.sh +5 -84
- package/scripts/runners/run-zai.sh +7 -0
package/README.ko.md
CHANGED
|
@@ -21,105 +21,55 @@
|
|
|
21
21
|
|
|
22
22
|
---
|
|
23
23
|
|
|
24
|
-
##
|
|
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
|
-
|
|
26
|
+
이미 AI 코딩 어시스턴트——**Claude Code, Codex, Cursor, Gemini CLI** 같은——를 쓰고
|
|
27
|
+
계시죠. 각각은 한 번에 하나의 AI 모델과 대화하며, "어떤 작업에 어떤 모델이 최선인가"는
|
|
28
|
+
당신 몫으로 남습니다.
|
|
33
29
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
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
|
-
|
|
36
|
+
**[⬇ 60초 시작으로](#-60초-시작)**
|
|
54
37
|
|
|
55
|
-
|
|
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
|
-
|
|
40
|
+
- **수정**: `configure set` 이 더 이상 `routing.local.yaml` 의 수기 주석을
|
|
41
|
+
삭제하지 않습니다. 자체 스탬프 줄과 교체 대상 레인만 다시 씁니다.
|
|
66
42
|
|
|
67
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
53
|
+
**가장 빠른 방법——npm 으로 설치:**
|
|
105
54
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
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
|
-
|
|
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`, `
|
|
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
|
|
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
|
-
|
|
468
|
+
omnilane 은 13개의 디스패치 벤더를 갖춥니다——4개의 하네스 네이티브(codex,
|
|
411
469
|
claude, grok, gemini), 3개의 집합/오버플로 CLI(kimi, qwen, opencode), 그리고
|
|
412
|
-
CLI 가 필요 없는
|
|
413
|
-
|
|
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
|
-
##
|
|
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
|
-
|
|
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
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
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
|
-
|
|
37
|
+
**[⬇ Jump to the 60-second start](#-60-second-start)**
|
|
66
38
|
|
|
67
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
55
|
+
**The quick way — install from npm:**
|
|
106
56
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
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
|
-
|
|
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
|
|
305
|
-
`
|
|
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
|
|
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
|
-
|
|
443
|
-
grok, gemini), three aggregator/overflow CLIs (kimi, qwen, opencode),
|
|
444
|
-
CLI-free
|
|
445
|
-
|
|
446
|
-
|
|
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
|
|