Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@ Legacy `graycode/shared/types` has been removed. Cross-repo severity and finding
### Architecture note: provider ownership

Implement provider protocols, adapters, catalog metadata, credential mappings, and
provider contract tests in `../eyrie` (the eyrie sibling repo) first. Graycode consumes providers only
provider contract tests in `../graycode-router` (the eyrie engine's repo) first. Graycode consumes providers only
through Eyrie's stable engine facade; Graycode changes should be limited to host UX
and facade integration. Concentrate AI is a pay-as-you-go gateway implemented
with its native Responses API (`/v1/responses`) under the
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ graycode is an AI-powered coding agent that lives in your terminal. It reads you

**Developer path:** one machine, keychain credentials, local memory. Run `graycode path` to check readiness.

- **Model-agnostic** — supports 28 first-class providers through [eyrie](https://github.com/GrayCodeAI/eyrie), including Anthropic, OpenAI, Gemini, Fireworks AI, Concentrate AI (pay-as-you-go), DeepSeek, and Ollama
- **Model-agnostic** — supports 28 first-class providers through [eyrie](https://github.com/GrayCodeAI/graycode-router), including Anthropic, OpenAI, Gemini, Fireworks AI, Concentrate AI (pay-as-you-go), DeepSeek, and Ollama
- **Zero CGO** — single static binary, cross-compiled for linux/darwin/windows on amd64/arm64
- **Privacy-first** — your code never leaves your machine except to the LLM API you choose
- **Docker-only execution** — agent commands run in an isolated container and
Expand Down Expand Up @@ -395,7 +395,7 @@ graycode works with any LLM provider. **Developer path:** paste keys in `/config
| Xiaomi (MiMo) Token Plan | `xiaomi_mimo_token_plan` | `XIAOMI_MIMO_TOKEN_PLAN_API_KEY` (pick region in `/config`) |
| Ollama (local) | `ollama` | `OLLAMA_BASE_URL` (no API key) |

Provider routing, model resolution, and retries are handled by [eyrie](https://github.com/GrayCodeAI/eyrie).
Provider routing, model resolution, and retries are handled by [eyrie](https://github.com/GrayCodeAI/graycode-router).
For deployment-aware routing, set `"deployment_routing": true` in `.graycode/settings.json`
or export `GRAYCODE_DEPLOYMENT_ROUTING=true`. Graycode will route canonical model IDs through
Eyrie's deployment catalog, so new models can be exposed by refreshing the catalog
Expand Down Expand Up @@ -482,7 +482,7 @@ You may keep a **personal** parent **`go.work`** that lists alternate clones on
| Component | Repository | Purpose |
|---|---|---|
| **graycode** | This repo | AI coding agent |
| **eyrie** | [GrayCodeAI/eyrie](https://github.com/GrayCodeAI/eyrie) | LLM provider runtime |
| **eyrie** | [GrayCodeAI/graycode-router](https://github.com/GrayCodeAI/graycode-router) | LLM provider runtime |

For the consolidated repo map and the current-vs-proposed architecture diagrams, see [docs/architecture/graycode-current-vs-proposed.md](docs/architecture/graycode-current-vs-proposed.md).
For execution-graph ownership, automatic capture seams, export/sync commands,
Expand Down
2 changes: 1 addition & 1 deletion docs/DEVELOPER-PATH.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ workspace; they are not nested under Graycode:
```bash
mkdir graycode-eco && cd graycode-eco
git clone https://github.com/GrayCodeAI/graycode-cli
git clone https://github.com/GrayCodeAI/eyrie
git clone https://github.com/GrayCodeAI/graycode-router
cd graycode-cli
make setup
go build -o graycode ./cmd/graycode
Expand Down
2 changes: 1 addition & 1 deletion docs/DYNAMIC-MODELS.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ hosts must be isolated from one another.
2. Add Eyrie tests for cache and live discovery, credential status, selection,
and generation/streaming.
3. Commit and verify standalone Eyrie.
4. Advance Graycode's `../eyrie` sibling checkout to that exact commit, then update
4. Advance Graycode's `../graycode-router` sibling checkout to that exact commit, then update
Graycode's module version when the Eyrie revision is published.
5. Verify both the workspace (`go.work`) and published-module
(`GOWORK=off`) build modes.
Expand Down
2 changes: 1 addition & 1 deletion docs/plans/fix-critical-and-high-review.md
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ These were documented in the original plan as out-of-scope-for-this-PR. They rem
## Context

A deep code review of `eyrie` and `graycode` (companion plan at
`../eyrie/docs/plans/fix-critical-and-high-review.md`) surfaced 7 critical
`../graycode-router/docs/plans/fix-critical-and-high-review.md`) surfaced 7 critical
and 9 high items. This plan covers **all graycode items** (C3, C4, C5, H5,
H6, H7, H8, H9) broken into a sequence of small, reviewable PRs.

Expand Down
4 changes: 2 additions & 2 deletions ecosystem.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ repositories:
module: github.com/GrayCodeAI/graycode-cli
workspace: true

- directory: eyrie
github_repo: eyrie
- directory: graycode-router
github_repo: graycode-router
product_name: Eyrie
kind: engine
language: go
Expand Down
12 changes: 11 additions & 1 deletion scripts/check-module-release-parity.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,25 @@ set -euo pipefail
# Run from the Graycode repository root.

ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
MANIFEST="${ROOT_DIR}/ecosystem.yaml"
repos=()
while IFS= read -r repo; do
[[ "${repo}" != "graycode-cli" && -n "${repo}" ]] && repos+=("${repo}")
done < <("${ROOT_DIR}/scripts/ecosystem-manifest.sh" list workspace)
failed=0

# Directory and module path differ when a repo is renamed (e.g. graycode-router
# hosts module github.com/GrayCodeAI/eyrie), so resolve via the manifest.
module_for_repo() {
awk -v dir="$1" '
/^ - directory:/ { cur=$0; sub(/^ - directory:[[:space:]]*/, "", cur); next }
/^ module:/ && cur == dir { mod=$0; sub(/^ module:[[:space:]]*/, "", mod); print mod; exit }
' "${MANIFEST}"
}

printf '%-24s %-14s %s\n' MODULE MODULE_COMMIT STATUS
for repo in "${repos[@]}"; do
module="github.com/GrayCodeAI/${repo}"
module="$(module_for_repo "${repo}")"

version=$(GOWORK=off go list -m -f '{{.Version}}' "$module" 2>/dev/null || true)
if [[ -z "$version" ]]; then
Expand Down