CLI model catalog and manual metadata
omniroute models reads the selected serverโs public model catalog first, including
its custom and synchronized entries. --output json and --output jsonl return all
matching rows, without a table truncation message. Interactive tables show at most
50 rows. JSON preserves public context limits, modalities, capabilities, model source
when supplied by the server, and API-format metadata; credentials and compatibility
headers are not output. A legacy /api/models fallback is used only when the public
endpoint returns HTTP 404, 405 or 501, never after an authentication failure.
omniroute completion refresh uses that same catalog. A failed model-catalog request
returns a nonzero exit code and preserves the previous completion cache. Bash, Zsh
and Fish completion scripts advertise the manual model subcommands.
Manual model lifecycle
์น์ ์ ๋ชฉ: โManual model lifecycleโThese operations use the existing authenticated /api/provider-models management
API. They honor the same global --context and --base-url selection as other CLI
commands. Use the canonical provider ID and the providerโs model ID separately; a
model ID containing slashes is valid. Use a configured management context rather
than putting credentials into command arguments.
omniroute models openai --output jsonomniroute models manual openaiomniroute models add openai my-model --name "My model" --context-window 32768 --dry-runomniroute models add openai my-model --name "My model" --context-window 32768omniroute models edit openai my-model --context-window 65536omniroute models edit openai my-model --clear-context-windowomniroute models remove openai my-model --dry-runomniroute models remove openai my-model --yesExamples describe syntax; replace provider/model IDs with entries belonging to your server. The add operation does not create a provider connection.
addrefuses an existing custom entry. Optional--max-output-tokenssets the output limit at creation;--api-formatsets the modelโs API format and its matching endpoint metadata, such asembeddingsrather thanchat.editrequires an existing manual entry. Its context limit uses the backendโs independent manual context override; clearing it removes that override, not the original input limit or synchronized metadata.removerequires--yes, except with--dry-run. It requestsresetOverride=true, preserving a synchronized entry with the same ID. Bulk deletion is not exposed.--dry-runperforms the authenticated preflight read but no write or inference.- Every actual mutation reads the manual catalog back.
persistenceVerified: truemeans the requested metadata was observed after the write; it does not mean the model can generate text or call tools.inferenceValidationis alwaysnot-run. - A readback failure returns a nonzero exit code. The write may already have taken effect; inspect the server before retrying. Concurrent writers are not serialized by this CLI, and the existing API does not provide a compare-and-swap transaction.
Test & Add: not implemented
์น์ ์ ๋ชฉ: โTest & Add: not implementedโManual entries are unverified. There is no --validate flag and these commands do
not issue inference requests or execute tools. A future opt-in validation flow must
separate inference credentials from management authentication and establish which
exact provider connection produced all three proofs: generation, a nonce-bound
synthetic tool call, and continuation after a synthetic tool result. No real tool
execution is needed for those proofs.
The existing x-omniroute-connection pin alone is insufficient as a proof receipt:
credential selection can intentionally release a pin for cooldown, quota or
excluded-account cases, and session affinity participates in selection. See
src/sse/services/auth.ts and the forcedConnectionId handling in
src/sse/handlers/chat.ts. Before implementing Test & Add, decide a strict-pin or
verifiable connection-receipt contract. Tests must then prove no persistence after
any failed, truncated, timed-out or wrong-connection response. This is a separate
backend contract decision, not a promise made by manual CRUD.
HagiCode
HagiCode๋ ์์ด์ ํธ ์ฝ๋ฉ ์์ ๊ณต๊ฐ์ ๋๋ค. ํ๋ถํ๊ณ ํธ๋ฆฌํ UI ์ํธ์์ฉ์ผ๋ก ๊ณํ ์๋ฆฝ, ์์ด์ ํธ ์คํ, ํ๋ก์ ํธ ์์ ์ ์ฝ๊ฒ ์์ํ๊ณ ๋ฐ๋ผ๊ฐ๋ฉฐ ๊ฐ๋ฐ์ ๋ ํฅ๋ฏธ๋ก์ด ๊ฒฝํ์ผ๋ก ๋ง๋ญ๋๋ค.
ํ๋ถํ๊ณ ํธ๋ฆฌํ UI ์ํธ์์ฉ์ผ๋ก ๊ณํ๋ถํฐ ํ๋ก์ ํธ ์์ ๊น์ง ์ฝ๊ฒ ๋ฐ๋ผ๊ฐ ์ ์์ต๋๋ค.
- ์ค๋งํธOpenSpec ์ํฌํ๋ก๋ ์๋๋ฅผ ์ ์, ์ค๊ณ, ์์ ์ ๊ฑฐ์ณ ๋ฐฐํฌ๊น์ง ์ด์ด์ง๋ ์คํ ๊ฐ๋ฅํ ๊ฒฝ๋ก๋ก ๋ฐ๊ฟ๋๋ค.
- ํจ์จ์ ๋ค์ค ์์ด์ ํธ ์คํ์ผ๋ก ์กฐ์ฌ, ๊ตฌํ, ๊ฒํ ๋ฅผ ๋ณ๋ ฌ๋ก ์งํํ๋ฉฐ ์ฌ๋ฌ ์ ์ฅ์์ ์ต์ํ Agent CLI๋ฅผ ์ง์ํฉ๋๋ค.
- ํฅ๋ฏธ๋ก์ดํ๋ถํ๊ณ ํธ๋ฆฌํ UI ์ํธ์์ฉ์ผ๋ก ๊ณํ ์๋ฆฝ, ์์ด์ ํธ ์คํ, ํ๋ก์ ํธ ์์ ์ ์ฝ๊ฒ ์์ํ๊ณ ๋ฐ๋ผ๊ฐ ์ ์์ต๋๋ค.
Windows์ฉ ๋ค์ด๋ก๋
HagiCode ๊ณต์
์์ด๋์ด๋ฅผ ์ค์ ๋ก ๋ฐฐํฌ๋๋ ์ํํธ์จ์ด๋ก.
HagiCode๋ ์์ด์ ํธ ์ฝ๋ฉ ์์ ๊ณต๊ฐ์ ๋๋ค. OpenSpec ์ํฌํ๋ก๋ก ๋ณ๊ฒฝ์ ๊ณํํ๊ณ , ๋ค์ค ์์ด์ ํธ ์คํ์ผ๋ก ์งํํ๋ฉฐ, Hero Scenario๋ก ๊ธด ์์ ์ ์งํ ์ํฉ์ ํ๋์ ๋ณด์ฌ ์์ด๋์ด๋ฅผ ์ค์ ๋ก ๋ฐฐํฌ๋๋ ์ํํธ์จ์ด๋ก ๋ง๋ญ๋๋ค.
- ์ค๋งํธ
- OpenSpec ์ํฌํ๋ก๋ ์๋๋ฅผ ์ ์๋ถํฐ ๋ฐฐํฌ๊น์ง ์ด์ด์ง๋ ์คํ ๊ฐ๋ฅํ ๊ฒฝ๋ก๋ก ๋ฐ๊ฟ๋๋ค.
- ํจ์จ์
- ๋ค์ค ์์ด์ ํธ ์คํ์ผ๋ก ์กฐ์ฌ, ๊ตฌํ, ๊ฒํ ๋ฅผ ๋ณ๋ ฌ๋ก ์งํํฉ๋๋ค.
- ์ฆ๊ฑฐ์ด
- ํธ๋ฆฌํ UI ์ํธ์์ฉ์ผ๋ก ๊ณํ, ์์ด์ ํธ ์คํ, ํ๋ก์ ํธ ์์ ์ ์ฝ๊ฒ ๋ฐ๋ผ๊ฐ ์ ์์ต๋๋ค.
ยฉ 2026 HagiCode | Powered By hagilight-starlight@0.21.0 | Branch: main | Commit: de60bcd | Built:

