Skip to content

Commit 93b14c2

Browse files
authored
chore!: switch dependency from eyrie to flux (#308)
* chore!: switch dependency from eyrie to flux - go.mod: github.com/GrayCodeAI/eyrie v0.6.0 -> github.com/GrayCodeAI/flux v0.0.1 - All import paths, type aliases (EyrieMessage -> FluxMessage etc.), internal identifiers, and import aliases renamed - Env vars: EYRIE_CONFIG_DIR -> FLUX_CONFIG_DIR, EYRIE_MODEL_CATALOG_PATH -> FLUX_MODEL_CATALOG_PATH - User state path: ~/.../eyrie/provider.json -> ~/.../flux/provider.json - Boundary guards, ecosystem manifest, CI workflows, docs, golden help snapshots, and compatibility matrix all updated - go.work workspace unaffected (module paths resolve via go.work) BREAKING CHANGE: dependency module path changed; env vars renamed. * style: gofumpt formatting
1 parent 9fcfef5 commit 93b14c2

313 files changed

Lines changed: 1758 additions & 1749 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.env.example‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@ RHO_DAEMON_API_KEY=
55
# The following are NOT read by rho — setting them has no effect:
66
# RHO_DAEMON_PORT / RHO_DAEMON_HOST — daemon binds 127.0.0.1:4590;
77
# override with the --host / --port flags (see `rho daemon start --help`)
8-
# EYRIE_API_KEY / EYRIE_BASE_URL, HARRIER_API_KEY / HARRIER_ADDR —
8+
# FLUX_API_KEY / FLUX_BASE_URL, HARRIER_API_KEY / HARRIER_ADDR —
99
# consumed by sibling services, not by this binary
1010
# See docs/user-guide/05-configuration.md for the full precedence chain.

‎.github/workflows/ci.yml‎

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ concurrency:
2020

2121
env:
2222
GO_VERSION: "1.26.6"
23-
# Module resolution: eyrie is the only GrayCodeAI module dependency and it is
23+
# Module resolution: flux is the only GrayCodeAI module dependency and it is
2424
# published on the public proxy. Direct-VCS fallback is retained for anything
2525
# else.
2626
GOPROXY: "https://proxy.golang.org,direct"
@@ -29,7 +29,7 @@ env:
2929
# Go's reference is explicit that a committed go.work "may cause a continuous
3030
# integration (CI) system to select and thus test the wrong versions of a
3131
# module's dependencies" and that "CI systems should generally not be allowed to
32-
# use the go.work file". Because ./.github/actions/checkout-eyrie clones the
32+
# use the go.work file". Because ./.github/actions/checkout-flux clones the
3333
# siblings at branch HEAD into the workspace parent, workspace mode would silently
3434
# hide version skew (e.g. a shared pin that no longer matches).
3535
# The `module` job opts back in (GOWORK: "auto") since `go work sync` and the
@@ -73,10 +73,10 @@ jobs:
7373
run: bash ./scripts/check-ecosystem-boundaries.sh
7474
- name: internal layer boundary guard
7575
run: bash ./scripts/check-internal-layer-imports.sh
76-
- name: eyrie client boundary guard
77-
run: bash ./scripts/check-eyrie-client-imports.sh
78-
- name: eyrie engine facade boundary guard
79-
run: bash ./scripts/check-eyrie-engine-boundary.sh
76+
- name: flux client boundary guard
77+
run: bash ./scripts/check-flux-client-imports.sh
78+
- name: flux engine facade boundary guard
79+
run: bash ./scripts/check-flux-engine-boundary.sh
8080

8181
# -------------------------------------------------------------------------
8282
# 2. Module hygiene — tidy, verify Rho plus the sibling Go modules via go.work.
@@ -94,7 +94,7 @@ jobs:
9494
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
9595
with:
9696
fetch-depth: 0
97-
- uses: ./.github/actions/checkout-eyrie
97+
- uses: ./.github/actions/checkout-flux
9898
with:
9999
ref: ${{ github.head_ref == 'feat/ecosystem-wiring-pr' && 'feat/ecosystem-wiring' || github.head_ref || github.ref_name }}
100100
- name: Generate ecosystem workspace
@@ -145,7 +145,7 @@ jobs:
145145
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
146146
with:
147147
fetch-depth: 0
148-
- uses: ./.github/actions/checkout-eyrie
148+
- uses: ./.github/actions/checkout-flux
149149
with:
150150
ref: ${{ github.head_ref || github.ref_name }}
151151
- uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
@@ -168,7 +168,7 @@ jobs:
168168
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
169169
with:
170170
fetch-depth: 0
171-
- uses: ./.github/actions/checkout-eyrie
171+
- uses: ./.github/actions/checkout-flux
172172
with:
173173
ref: ${{ github.head_ref || github.ref_name }}
174174
- uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
@@ -187,7 +187,7 @@ jobs:
187187
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
188188
with:
189189
fetch-depth: 0
190-
- uses: ./.github/actions/checkout-eyrie
190+
- uses: ./.github/actions/checkout-flux
191191
with:
192192
ref: ${{ github.head_ref || github.ref_name }}
193193
- uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
@@ -212,7 +212,7 @@ jobs:
212212
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
213213
with:
214214
fetch-depth: 0
215-
- uses: ./.github/actions/checkout-eyrie
215+
- uses: ./.github/actions/checkout-flux
216216
with:
217217
ref: ${{ github.head_ref || github.ref_name }}
218218
- uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
@@ -241,7 +241,7 @@ jobs:
241241
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
242242
with:
243243
fetch-depth: 0
244-
- uses: ./.github/actions/checkout-eyrie
244+
- uses: ./.github/actions/checkout-flux
245245
with:
246246
ref: ${{ github.head_ref || github.ref_name }}
247247
- uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
@@ -311,7 +311,7 @@ jobs:
311311
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
312312
with:
313313
fetch-depth: 0
314-
- uses: ./.github/actions/checkout-eyrie
314+
- uses: ./.github/actions/checkout-flux
315315
with:
316316
ref: ${{ github.head_ref || github.ref_name }}
317317
- uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
@@ -419,7 +419,7 @@ jobs:
419419
runs-on: ubuntu-latest
420420
steps:
421421
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
422-
- uses: ./.github/actions/checkout-eyrie
422+
- uses: ./.github/actions/checkout-flux
423423
with:
424424
ref: ${{ github.head_ref || github.ref_name }}
425425
- uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c
@@ -477,7 +477,7 @@ jobs:
477477
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
478478
with:
479479
fetch-depth: 0
480-
- uses: ./.github/actions/checkout-eyrie
480+
- uses: ./.github/actions/checkout-flux
481481
with:
482482
ref: ${{ github.head_ref || github.ref_name }}
483483
- uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
@@ -522,7 +522,7 @@ jobs:
522522
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
523523
with:
524524
fetch-depth: 0
525-
- uses: ./.github/actions/checkout-eyrie
525+
- uses: ./.github/actions/checkout-flux
526526
with:
527527
ref: ${{ github.head_ref || github.ref_name }}
528528
- uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
@@ -552,7 +552,7 @@ jobs:
552552
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
553553
with:
554554
fetch-depth: 0
555-
- uses: ./.github/actions/checkout-eyrie
555+
- uses: ./.github/actions/checkout-flux
556556
with:
557557
ref: ${{ github.head_ref || github.ref_name }}
558558
- uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0

‎.github/workflows/compatibility-matrix.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ jobs:
2323
runs-on: ubuntu-latest
2424
steps:
2525
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
26-
- uses: ./.github/actions/checkout-eyrie
26+
- uses: ./.github/actions/checkout-flux
2727
with:
2828
ref: ${{ github.head_ref || github.ref_name }}
2929
- uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0

‎.github/workflows/release.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ jobs:
2525
fetch-depth: 0 # goreleaser needs full history for changelog
2626

2727
# Releases build against the sibling repos resolved via the workspace go.work.
28-
- uses: ./.github/actions/checkout-eyrie
28+
- uses: ./.github/actions/checkout-flux
2929
with:
3030
ref: ${{ github.ref_name }}
3131

‎.shared-templates/docs/coverage-matrix.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ repo's threshold, update both the CI file and this table in the same PR.**
99
| Repo | Threshold | Mechanism |
1010
|---|---|---|
1111
| `rho` | 65% | inline `bc` check in `ci.yml` |
12-
| `eyrie` | 60% | inline `bc` check in `ci.yml` |
12+
| `flux` | 60% | inline `bc` check in `ci.yml` |
1313
| `graycode-skills` | n/a | no Go/Python test suite (skill/content registry) |
1414

1515
## Why thresholds differ per repo

‎.shared-templates/scripts/check-ecosystem-boundaries.sh.tmpl‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
1212
cd "$ROOT_DIR"
1313

1414
# =============================================================================
15-
# VARIANT 1 — Support engine (eyrie, harrier, shrike, swift, kestrel, merlin).
15+
# VARIANT 1 — Support engine (flux, harrier, shrike, swift, kestrel, merlin).
1616
# Engines are peers: they may depend on falcon,
1717
# but never on rho/internal/* or another engine.
1818
# =============================================================================
@@ -81,7 +81,7 @@ echo "ecosystem boundary guard passed"
8181
# only — never on a support engine directly, and never on rho/internal.
8282
# =============================================================================
8383
#
84-
# FORBIDDEN_ENGINES='github\.com/GrayCodeAI/(eyrie|harrier|shrike|swift|kestrel|merlin)(/|")'
84+
# FORBIDDEN_ENGINES='github\.com/GrayCodeAI/(flux|harrier|shrike|swift|kestrel|merlin)(/|")'
8585
# FORBIDDEN_INTERNAL='github\.com/GrayCodeAI/rho/internal'
8686
#
8787
# (same rg/grep + report pattern as Variant 1, naming "SDKs/skills must go

‎.shared-templates/workflows/go-release.yml.tmpl‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ jobs:
2323
fetch-depth: 0 # goreleaser needs full history for changelog
2424

2525
# Only needed if this repo has local workspace dependencies on other
26-
# graycode-eco repos at build time (rho itself clones eyrie this way via
27-
# ./.github/actions/checkout-eyrie). Omit for repos with none.
26+
# graycode-eco repos at build time (rho itself clones flux this way via
27+
# ./.github/actions/checkout-flux). Omit for repos with none.
2828

2929
- name: Set up Go
3030
uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0

‎AGENTS.md‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ alwaysApply: false
77
# Extending rho
88

99
rho is an open-source code intelligence platform. It lives in the `graycode-eco`
10-
workspace alongside the ecosystem repos that power it (`eyrie`,
10+
workspace alongside the ecosystem repos that power it (`flux`,
1111
`shrike`, `harrier`, `swift`, `kestrel`, `merlin`). This document describes how to extend
1212
rho with custom tools, skills, hooks, and integrations.
1313

@@ -192,8 +192,8 @@ Cross-repo severity and finding contracts now live in rho's `internal/contracts`
192192
### Architecture note: provider ownership
193193

194194
Implement provider protocols, adapters, catalog metadata, credential mappings, and
195-
provider contract tests in `../eyrie` (the eyrie engine's repo) first. Rho consumes providers only
196-
through Eyrie's stable engine facade; Rho changes should be limited to host UX
195+
provider contract tests in `../flux` (the flux engine's repo) first. Rho consumes providers only
196+
through Flux's stable engine facade; Rho changes should be limited to host UX
197197
and facade integration. Concentrate AI is a pay-as-you-go gateway implemented
198198
with its native Responses API (`/v1/responses`) under the
199199
`concentrate-payg` deployment.
@@ -245,7 +245,7 @@ This project is indexed by GitNexus as **rho** (97743 symbols, 322940 relationsh
245245

246246
### Workspace workflow (sibling repos)
247247

248-
rho depends on ecosystem repos (`eyrie`, etc.) as independent sibling repos in the `graycode-eco` workspace. Rho's `go.work` lists them as `../<repo>`, so local changes in any sibling are automatically picked up by rho. Each sibling is its own git repo, versioned and released independently.
248+
rho depends on ecosystem repos (`flux`, etc.) as independent sibling repos in the `graycode-eco` workspace. Rho's `go.work` lists them as `../<repo>`, so local changes in any sibling are automatically picked up by rho. Each sibling is its own git repo, versioned and released independently.
249249

250250
1. Edit + test in `../<repo>` — run its tests, run `make test` in rho
251251
2. Push from the sibling: `git push origin <branch>`

‎CHANGELOG.md‎

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
### Changed
11+
- **Dependency renamed eyrie → flux**: rho now depends on
12+
`github.com/GrayCodeAI/flux v0.0.1` (the provider runtime was renamed).
13+
All imports, env vars (`EYRIE_CONFIG_DIR` → `FLUX_CONFIG_DIR`,
14+
`EYRIE_MODEL_CATALOG_PATH` → `FLUX_MODEL_CATALOG_PATH`), boundary-guard
15+
scripts, ecosystem manifest entries, docs, and internal identifiers were
16+
renamed to match. User state paths move from `~/.../eyrie/provider.json`
17+
to `~/.../flux/provider.json`.
18+
1019
### Security
1120
- **Session lock TOCTOU eliminated**: `AcquireLock`'s stat → stale-if->5min → remove → O_EXCL dance could delete a live lock on misjudged staleness and let two instances open the same session. Mutual exclusion now uses an OS advisory lock (`gofrs/flock`, promoted to a direct dependency); a crashed holder's lock is reclaimed instantly because the kernel drops the flock at process death. The lock file keeps PID/timestamps purely as diagnostics.
1221
- **Hardened atomic writes for state files**: global settings, checkpoint file contents and restores, handovers, and named checkpoints now go through `internal/safewrite` (same 0600 mode as before, plus fsync+rename atomicity and symlink refusal at the destination).
@@ -22,20 +31,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
2231

2332
### Removed
2433
- **BREAKING — `rho credentials migrate` removed**: the subcommand, its man page entry, and the `MigrateEnvFileCredentials` wrappers are gone, and `rho path` no longer reports legacy `~/.rho/env` / `~/.rho/.env` files. Save keys through `/config`.
25-
- **BREAKING — settings model/provider migration removed**: `LoadSettings` no longer moves `model`/`provider` from `settings.json` into Eyrie's `provider.json`, and `SetActiveSelection` is deleted. Stale `model`/`provider` values left in `settings.json` are now ignored on load (Eyrie's selection wins; `--settings` overrides still apply); select the model in `/config`.
34+
- **BREAKING — settings model/provider migration removed**: `LoadSettings` no longer moves `model`/`provider` from `settings.json` into Flux's `provider.json`, and `SetActiveSelection` is deleted. Stale `model`/`provider` values left in `settings.json` are now ignored on load (Flux's selection wins; `--settings` overrides still apply); select the model in `/config`.
2635
- **BREAKING — startup provider-secrets migration removed**: print/REPL/watch/TUI startup no longer calls `MigrateProviderSecrets`, and the method is dropped from the gateway `CatalogMaintenance` interface. `rho path` still fails when `provider.json` holds secrets; remove those fields manually.
2736
- **BREAKING — `shared/types` guards removed**: `scripts/check-shared-types-imports.sh`, the `contracts-guard` make target, its lefthook and CI steps, and the matching testaudit checks are deleted because the package no longer exists. The ecosystem boundary guards still block `rho/internal` imports.
2837

2938
## [0.2.0] — 2026-07-13
3039

3140
### Changed
32-
- **Rho/Eyrie production boundary completed**: Rho owns the product face,
33-
sessions, tools, permissions, and public schemas while Eyrie v0.2.1 owns
41+
- **Rho/Flux production boundary completed**: Rho owns the product face,
42+
sessions, tools, permissions, and public schemas while Flux v0.2.1 owns
3443
credentials, catalog resolution, provider transport, resilience, and usage
35-
telemetry behind the stable `eyrie/engine` facade.
44+
telemetry behind the stable `flux/engine` facade.
3645
- **Provider routing and usage attribution hardened**: resolved route changes,
3746
continuation segments, and terminal usage are propagated without duplicate
38-
accounting, and production Eyrie calls use exactly one resilience layer.
47+
accounting, and production Flux calls use exactly one resilience layer.
3948
- **Daemon conversations are durable**: JSON and SSE chat requests create or
4049
resume persisted sessions, expose stable session IDs, preserve metadata, and
4150
distinguish invalid, missing, and corrupt state.
@@ -48,8 +57,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
4857
- **`--permission-mode` CLI flag removed**; `--dangerously-skip-permissions` unchanged (now maps to the Autonomous tier). New `--dry-run` flag added as an unconditional kill switch (deny every tool call, regardless of tier or spec stage) — replaces `dontAsk`'s hard-lockout role.
4958
- **Version re-baselined to `0.1.0`** across `cmd/rho/main.go`, `cmd/daemon.go`,
5059
`flake.nix`, `.github/workflows/release.yml`, and the `update`/daemon test suites, aligning rho
51-
with the rest of the GrayCodeAI ecosystem (`eyrie`, `shrike`, `harrier`, `kestrel`, `merlin`).
52-
- **Architecture boundary hardening**: Rho now owns runtime request/response DTOs, transport config/provider seams, and review/verification product-boundary contracts, with `eyrie/client` usage restricted to internal adapters and guarded in CI.
60+
with the rest of the GrayCodeAI ecosystem (`flux`, `shrike`, `harrier`, `kestrel`, `merlin`).
61+
- **Architecture boundary hardening**: Rho now owns runtime request/response DTOs, transport config/provider seams, and review/verification product-boundary contracts, with `flux/client` usage restricted to internal adapters and guarded in CI.
5362
- **`shared/types` removed**: Rho no longer ships the old shared type path, and local boundary checks now block any attempt to reintroduce it.
5463

5564
### Added
@@ -237,5 +246,5 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
237246
### Added
238247
- Project scaffold with cobra CLI and Bubbletea TUI
239248
- Interactive chat REPL with textarea input, spinner, lipgloss styling
240-
- eyrie wired as LLM provider dependency
249+
- flux wired as LLM provider dependency
241250
- GitHub Actions CI

0 commit comments

Comments
 (0)