Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
105 commits
Select commit Hold shift + click to select a range
2bbce9f
feat: dht service discovery
georgewhewell Feb 12, 2026
50a9147
feat: gpu accel, executor cleanup
georgewhewell Feb 13, 2026
598ca03
feat: download/execute policies
georgewhewell Mar 4, 2026
d33d892
feat: monitor
georgewhewell Mar 4, 2026
afd8b68
refactor(remote-exec): unify graph execution and discovery
georgewhewell Mar 10, 2026
cfaafd6
chore(serve): document and package safer node deployment
georgewhewell Mar 10, 2026
63796fb
feat: adds --local and --local-verify to execute command
georgewhewell Mar 18, 2026
5494dbc
executor: rework
georgewhewell Mar 21, 2026
939ebd4
chore: tidy executor crate
georgewhewell Mar 22, 2026
45d8fca
Switch executor IR to runtime programs
georgewhewell Mar 22, 2026
25ae89e
Cache bound programs in executor
georgewhewell Mar 22, 2026
e479007
Log bound program and first token latency
georgewhewell Mar 22, 2026
2e67967
Add local two-job timing test
georgewhewell Mar 22, 2026
f71137a
Wait for weights in timing test
georgewhewell Mar 22, 2026
ede10f9
nix: build for sm120
georgewhewell Mar 22, 2026
aa23e60
Add executor prefix snapshot cache
georgewhewell Mar 22, 2026
054b238
Add debug timing for execution phases
georgewhewell Mar 22, 2026
c702f04
fix: use new catgrad runtime, preload weights
georgewhewell Mar 23, 2026
d9293aa
feat: prefix cache -> execution cache
georgewhewell Mar 23, 2026
eda4b9f
fix: remove quote racing
georgewhewell Mar 23, 2026
b352237
fix: iroh 0.97, catgrad serialization
georgewhewell Mar 23, 2026
55c82f5
fix: turn down trace config once execution finishes
georgewhewell Mar 23, 2026
7b70468
wip: bump catgrad
georgewhewell Mar 23, 2026
f739a32
ci: cleanup dep script
georgewhewell Mar 23, 2026
5c25102
fix: rm useless metal feature
georgewhewell Mar 23, 2026
b4a161b
fix: docker images, execute refactor
georgewhewell Mar 24, 2026
c2e2156
feat: add cross-service OpenTelemetry trace context propagation
georgewhewell Mar 24, 2026
d654c7f
feat: oltp trace propagation
georgewhewell Mar 24, 2026
fc65b16
feat: expose server-cuda
georgewhewell Mar 25, 2026
a8bf39f
fix: add server-cuda to overlay
georgewhewell Mar 25, 2026
7ae009d
fix: apply overlay by default in nixos module
georgewhewell Mar 25, 2026
a20d719
feat: nixos otel config
georgewhewell Mar 25, 2026
9f2ccbd
feat: add ListModels RPC, home-manager otel config, runner step_tokens
georgewhewell Mar 25, 2026
c1decb1
fix: qwen3
georgewhewell Mar 25, 2026
193a26a
chore: bump
georgewhewell Mar 25, 2026
e5cffa1
feat: better info, peer tracking
georgewhewell Mar 25, 2026
4242d3b
fix: be stricter about peers
georgewhewell Mar 26, 2026
4a7c1f2
fix: tidy logging, tests
georgewhewell Mar 26, 2026
f21bb96
feat: structured rpc quote
georgewhewell Mar 26, 2026
2d81447
fix: weight preload async
georgewhewell Mar 26, 2026
9e133de
feat: share version
georgewhewell Mar 26, 2026
3c05e1b
feat: add GetStats and GetModelStats RPCs for cumulative token statis…
georgewhewell Mar 26, 2026
6a61199
feat: export token stats as prometheus metrics
georgewhewell Mar 26, 2026
3545383
feat: persistent node identity across restarts
georgewhewell Mar 26, 2026
96d503c
chore: bump deps
georgewhewell Mar 26, 2026
1289bc5
fix: use full endpoint builder for discovery clients
georgewhewell Mar 26, 2026
5d4b146
fix: wire peer discovery into PeerTracker for GetKnownPeers
georgewhewell Mar 26, 2026
a9a81ca
chore: bump catgrad
georgewhewell Apr 1, 2026
7dc7a85
fix: use clang stdenv
georgewhewell Apr 1, 2026
9cae638
feat: track tokens, discovery
georgewhewell Apr 1, 2026
748ee93
chore: bump
georgewhewell Apr 1, 2026
9bca9f7
rebase catgrad
georgewhewell Apr 19, 2026
434059c
fix: broken tests
georgewhewell Apr 19, 2026
3009d40
chore: stop executor depending on backend, restore lean cli
georgewhewell Apr 24, 2026
54b8570
deps: iroh 0.98.1 migration (via path dep to ../tonic-iroh-transport)
georgewhewell Apr 24, 2026
a5e7fd6
chore: nix cleanup
georgewhewell Apr 24, 2026
0418776
nix: refactor, add static/cross builds, add HF cache packages
georgewhewell Apr 25, 2026
cd65a12
feat(executor): migrate to catgrad runtime-primitives
georgewhewell Apr 26, 2026
2722ea1
chore: gateway tool calls + peer tracker + discovery cleanup
georgewhewell Apr 26, 2026
6636ade
refactor(executor): migrate to BoundProgram::bind, drop Bundle wrapping
georgewhewell Apr 26, 2026
da9fb65
refactor(executor): use Program accessors / ProgramSpec.into()
georgewhewell Apr 26, 2026
ea16155
refactor(executor): commitment-keyed replay; drop prefix-cache machinery
georgewhewell Apr 26, 2026
51e2eb7
refactor(executor): unified streaming Execute; reshape inputs error; …
georgewhewell Apr 26, 2026
99d129b
refactor(errors): typed From impls; collapse decode_tokens nesting
georgewhewell Apr 26, 2026
84dddd2
feat(provenance): expose commitment/program/receipt CIDs as HTTP head…
georgewhewell Apr 26, 2026
af88294
refactor(provenance): drop program-id; commitment already names the p…
georgewhewell Apr 26, 2026
307af5c
feat(provenance): log receipt + commitment at gateway completion sites
georgewhewell Apr 26, 2026
1f9d528
feat(gateway): thread ChatTurn through chat surfaces, drop blind pars…
georgewhewell Apr 26, 2026
c1830fe
feat(gateway): --pi-log flag to redirect pi stdout/stderr to a file
georgewhewell Apr 27, 2026
9c05b05
feat(gateway): inline hellas extension on protocol-native frames
georgewhewell Apr 27, 2026
b7143f8
deps: catgrad megatooler — typed ChatTurn errors, ToolDirectory at ga…
georgewhewell Apr 27, 2026
c452373
test(nix): gateway-multi-model discovery test + split pi/gateway logs
georgewhewell Apr 27, 2026
563b5a6
nix: pi wrapping
georgewhewell Apr 27, 2026
a266f52
deps: bump catgrad megatooler to ac0e432
georgewhewell Apr 29, 2026
5b60c20
bump flake
georgewhewell Apr 29, 2026
afceebd
nix: accept list-of-patterns for download/execute policies
georgewhewell Apr 29, 2026
4a78fea
Refactor protocol commitments and protobuf bindings
georgewhewell May 8, 2026
ef2f1d5
Split protobuf packages by protocol concern
georgewhewell May 8, 2026
80f6721
Add opaque CLI execution path
georgewhewell May 8, 2026
adf478e
Persist producer signing keys
georgewhewell May 8, 2026
c7fe33c
Expose signed receipt envelopes in gateway metadata
georgewhewell May 8, 2026
5e8704c
Clean up refactor plan wording
georgewhewell May 8, 2026
a3a146d
refactor: align node protocol with catnix identities
georgewhewell May 8, 2026
968c81f
feat(executor): resolve local symbolic artifacts by cid
georgewhewell May 8, 2026
b481590
feat(executor): persist symbolic text state artifacts
georgewhewell May 8, 2026
138917e
feat(executor): substitute cached symbolic inputs
georgewhewell May 8, 2026
7454152
feat(executor): support persistent artifact blob store
georgewhewell May 8, 2026
2793a2f
feat(executor): recover symbolic artifacts from blob store
georgewhewell May 8, 2026
a3db087
feat(executor): publish symbolic artifact bundles
georgewhewell May 8, 2026
bc70587
feat(executor): export symbolic artifact closures
georgewhewell May 8, 2026
e45544a
refactor(executor): simplify artifact courtesy API
georgewhewell May 8, 2026
fe2f1ab
feat(cli): add artifact courtesy commands
georgewhewell May 8, 2026
793eb93
chore(deps): use catgrad git branch
georgewhewell May 8, 2026
2ecb7e2
refactor: tighten receipt and executor glue
georgewhewell May 8, 2026
d0fab7e
refactor(core): simplify receipt commitments
georgewhewell May 8, 2026
ec8a648
feat(cli): gate OTEL behind cargo feature; bridge iroh metrics; rustl…
georgewhewell May 9, 2026
6d300ce
ci: add quick checks workflow on self-hosted runner
georgewhewell May 10, 2026
eb1e64d
ci: include C linker in clippy/test check inputs
georgewhewell May 10, 2026
320cba1
ci: drive matrix from data, run checks inside dev shell
georgewhewell May 10, 2026
b1ee803
ci: skip non-fixable checks in fix-all runner
georgewhewell May 10, 2026
c3059ab
chore: apply cargo fmt + cargo-sort + clippy --fix
georgewhewell May 10, 2026
f47d05f
refactor: box large enum variants flagged by clippy
georgewhewell May 10, 2026
9ff839f
ci: add extended build matrix after quick gate
georgewhewell May 10, 2026
ea7b8f5
ci: re-trigger extended builds (post-zvol-migration verification)
georgewhewell May 11, 2026
2f50145
ci: extend check matrix
georgewhewell May 11, 2026
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
178 changes: 178 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,178 @@
name: CI

# Trigger model:
# push (any branch) → lints only
# pull_request → lints + build-smoke + e2e
# push to default branch → lints + build-full (TODO)
# workflow_dispatch (release) → push artifacts (TODO)
on:
pull_request:
push:

permissions:
contents: read

concurrency:
group: ci-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

jobs:
devshell:
runs-on: [self-hosted, shared]
steps:
- uses: actions/checkout@v4
- name: Build dev shell
run: nix develop --command true

lints-matrix:
runs-on: [self-hosted, shared]
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- uses: actions/checkout@v4
- id: set-matrix
name: Enumerate CI checks
run: |
set -Eeu
matrix="$(
nix eval --json '.#ci.x86_64-linux.checks' --apply '
cs: { include = map (name: { inherit name; }) (builtins.attrNames cs); }
'
)"
echo "matrix=$matrix" >> "$GITHUB_OUTPUT"

lints:
runs-on: [self-hosted, shared]
name: lint:${{ matrix.name }}
needs:
- devshell
- lints-matrix
strategy:
fail-fast: false
matrix: ${{ fromJSON(needs.lints-matrix.outputs.matrix) }}
steps:
- uses: actions/checkout@v4
- name: nix run .#check-${{ matrix.name }}
run: nix run '.#check-${{ matrix.name }}'

lints-passed:
runs-on: [self-hosted, shared]
if: always()
name: Lints passed
needs:
- devshell
- lints-matrix
- lints
steps:
- name: Require devshell + lints-matrix + all lints succeeded
run: |
set -Eeu
test '${{ needs.devshell.result }}' = 'success'
test '${{ needs.lints-matrix.result }}' = 'success'
test '${{ needs.lints.result }}' = 'success'

# ─── build-smoke (PR only) ──────────────────────────────────────────────
# Slow native + cross builds gated to PRs. The native builds run cargo test
# as part of buildRustPackage (`doCheck = true` by default), so this stage
# also covers test execution.

build-smoke-matrix:
if: github.event_name == 'pull_request'
needs: lints-passed
runs-on: [self-hosted, shared]
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- uses: actions/checkout@v4
- id: set-matrix
name: Enumerate smoke builds
run: |
set -Eeu
matrix="$(
nix eval --json '.#ci.x86_64-linux.builds' --apply '
builds: {
include = builtins.attrValues (
builtins.mapAttrs (name: attr: { inherit name attr; }) builds
);
}
'
)"
echo "matrix=$matrix" >> "$GITHUB_OUTPUT"

build-smoke:
if: github.event_name == 'pull_request'
needs: build-smoke-matrix
runs-on: [self-hosted, shared]
name: build:${{ matrix.name }}
strategy:
fail-fast: false
matrix: ${{ fromJSON(needs.build-smoke-matrix.outputs.matrix) }}
steps:
- uses: actions/checkout@v4
- name: nix build .#${{ matrix.attr }}
run: nix build --print-build-logs --no-link '.#packages.x86_64-linux.${{ matrix.attr }}'

build-smoke-passed:
if: always() && github.event_name == 'pull_request'
runs-on: [self-hosted, shared]
name: Build smoke passed
needs:
- build-smoke-matrix
- build-smoke
steps:
- name: Require build-smoke-matrix + all smoke builds succeeded
run: |
set -Eeu
test '${{ needs.build-smoke-matrix.result }}' = 'success'
test '${{ needs.build-smoke.result }}' = 'success'

# ─── e2e (PR only) ──────────────────────────────────────────────────────
# nixosTests run in QEMU VMs. They depend on the same package derivations
# the build-smoke stage built, so this stage reuses them via the nix store
# — no rebuilds.

e2e-matrix:
if: github.event_name == 'pull_request'
needs: build-smoke-passed
runs-on: [self-hosted, shared]
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- uses: actions/checkout@v4
- id: set-matrix
name: Enumerate nixosTests
run: |
set -Eeu
matrix="$(
nix eval --json '.#nixosTests.x86_64-linux' --apply '
tests: { include = map (name: { inherit name; }) (builtins.attrNames tests); }
'
)"
echo "matrix=$matrix" >> "$GITHUB_OUTPUT"

e2e:
if: github.event_name == 'pull_request'
needs: e2e-matrix
runs-on: [self-hosted, shared]
name: e2e:${{ matrix.name }}
strategy:
fail-fast: false
matrix: ${{ fromJSON(needs.e2e-matrix.outputs.matrix) }}
steps:
- uses: actions/checkout@v4
- name: nix build .#nixosTests.x86_64-linux.${{ matrix.name }}
run: nix build --print-build-logs --no-link '.#nixosTests.x86_64-linux.${{ matrix.name }}'

e2e-passed:
if: always() && github.event_name == 'pull_request'
runs-on: [self-hosted, shared]
name: E2E passed
needs:
- e2e-matrix
- e2e
steps:
- name: Require e2e-matrix + all e2e succeeded
run: |
set -Eeu
test '${{ needs.e2e-matrix.result }}' = 'success'
test '${{ needs.e2e.result }}' = 'success'
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/target
/result
/result*
.direnv
.envrc
.claude
Expand Down
Loading
Loading