Skip to content

Commit c7d41b0

Browse files
gitagent 3: the Rust rewrite
One static binary that runs the same agent folders, hooks, schedules and SDK code as the TypeScript gitagent, scored 93.03% ±0.8 on Terminal-Bench 2.1 with Claude Opus 5.5, and adds a terminal console, parallel sub-agents with a live task board, schedules, and SDKs for Python, TypeScript and any other language over a line protocol.
2 parents ed59584 + 6548444 commit c7d41b0

343 files changed

Lines changed: 49286 additions & 40053 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.

‎.github/workflows/ci.yml‎

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
name: ci
2+
3+
on:
4+
push:
5+
pull_request:
6+
7+
env:
8+
CARGO_TERM_COLOR: always
9+
10+
jobs:
11+
check:
12+
runs-on: ubuntu-latest
13+
steps:
14+
- uses: actions/checkout@v4
15+
- name: Install toolchain from rust-toolchain.toml
16+
run: rustup show active-toolchain || rustup toolchain install
17+
- uses: Swatinem/rust-cache@v2
18+
- run: cargo fmt --all -- --check
19+
- run: cargo clippy --all-targets --locked -- -D warnings
20+
- run: cargo test --workspace --locked
21+
22+
musl:
23+
runs-on: ubuntu-latest
24+
needs: check
25+
steps:
26+
- uses: actions/checkout@v4
27+
- name: Install toolchain from rust-toolchain.toml
28+
run: rustup show active-toolchain || rustup toolchain install
29+
- uses: Swatinem/rust-cache@v2
30+
- uses: mlugg/setup-zig@v2
31+
- run: cargo install --locked cargo-zigbuild
32+
- run: scripts/build-release.sh
33+
- name: Check the binaries are static
34+
run: |
35+
for t in x86_64-unknown-linux-musl aarch64-unknown-linux-musl; do
36+
file target/$t/release/gitagent | tee /dev/stderr | grep -q 'statically linked'
37+
done
38+
- uses: actions/upload-artifact@v4
39+
with:
40+
name: gitagent-linux
41+
path: target/*-unknown-linux-musl/release/gitagent
42+
43+
clients:
44+
runs-on: ubuntu-latest
45+
needs: check
46+
steps:
47+
- uses: actions/checkout@v4
48+
- name: Install toolchain from rust-toolchain.toml
49+
run: rustup show active-toolchain || rustup toolchain install
50+
- uses: Swatinem/rust-cache@v2
51+
- run: cargo build --locked -p gitagent-cli
52+
- uses: actions/setup-python@v5
53+
with:
54+
python-version: "3.12"
55+
- name: Python client
56+
run: GITAGENT_BIN=target/debug/gitagent python3 -m unittest discover -s clients/python/tests -v
57+
- uses: actions/setup-node@v4
58+
with:
59+
node-version: "22"
60+
- name: TypeScript client
61+
working-directory: clients/typescript
62+
run: npm install --no-audit --no-fund && npm run check

‎.github/workflows/publish.yml‎

Lines changed: 0 additions & 29 deletions
This file was deleted.

‎.github/workflows/release.yml‎

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
name: release
2+
3+
on:
4+
push:
5+
tags: ["v*"]
6+
7+
permissions:
8+
contents: write
9+
10+
jobs:
11+
linux:
12+
runs-on: ubuntu-latest
13+
steps:
14+
- uses: actions/checkout@v4
15+
- name: Install toolchain from rust-toolchain.toml
16+
run: rustup show active-toolchain || rustup toolchain install
17+
- uses: mlugg/setup-zig@v2
18+
- run: cargo install --locked cargo-zigbuild
19+
- run: scripts/package-release.sh x86_64-unknown-linux-musl aarch64-unknown-linux-musl
20+
- uses: actions/upload-artifact@v4
21+
with:
22+
name: linux
23+
path: dist/*.tar.gz
24+
25+
macos:
26+
runs-on: macos-latest
27+
steps:
28+
- uses: actions/checkout@v4
29+
- name: Install toolchain from rust-toolchain.toml
30+
run: rustup show active-toolchain || rustup toolchain install
31+
- run: scripts/package-release.sh aarch64-apple-darwin x86_64-apple-darwin
32+
- uses: actions/upload-artifact@v4
33+
with:
34+
name: macos
35+
path: dist/*.tar.gz
36+
37+
publish:
38+
needs: [linux, macos]
39+
runs-on: ubuntu-latest
40+
steps:
41+
- uses: actions/download-artifact@v4
42+
with:
43+
path: dist
44+
merge-multiple: true
45+
- name: Checksums
46+
working-directory: dist
47+
run: sha256sum gitagent-*.tar.gz > SHA256SUMS
48+
- name: Create the release
49+
env:
50+
GH_TOKEN: ${{ github.token }}
51+
run: gh release create "$GITHUB_REF_NAME" dist/* --repo "$GITHUB_REPOSITORY" --title "$GITHUB_REF_NAME" --generate-notes

‎.gitignore‎

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
1-
node_modules/
2-
dist/
3-
pi-mono/
4-
.claude/
5-
.gitagent/
6-
.gitagent/whatsapp-auth/
7-
*.tgz
8-
snake-game.html
9-
examples/debug-events.ts
1+
/target/
2+
bench/jobs/
103
.env
11-
cmd
12-
workspace/
13-
memory/.latest-frame.jpg
14-
memory/.latest-screen.jpg
4+
*.env
155
.DS_Store
16-
.basecode/
17-
.cursor/
18-
.vscode/
19-
.mcp.json
6+
.env.*
7+
__pycache__/
8+
*.pyc
9+
dist/
10+
11+
# The full run log, the dev/held-out split, the round history, the published
12+
# scores and the lesson store stay on the benchmark machine; the public proof
13+
# is the job logs on the Harbor hub.
14+
bench/RESULTS.md
15+
bench/split.json
16+
bench/rounds.json
17+
bench/leaderboard.json
18+
bench/lessons/
19+
bench/reruns/

0 commit comments

Comments
 (0)