Skip to content

Commit 2c93e3f

Browse files
committed
ci(workflows): Add release workflow for automated version tagging and deployment
1 parent d336df2 commit 2c93e3f

31 files changed

+6370
-474
lines changed

.github/workflows/release.yml

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
name: Release
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*'
7+
8+
jobs:
9+
release:
10+
permissions:
11+
contents: write
12+
strategy:
13+
fail-fast: false
14+
matrix:
15+
include:
16+
- platform: macos-latest
17+
args: --target aarch64-apple-darwin
18+
- platform: macos-latest
19+
args: --target x86_64-apple-darwin
20+
- platform: ubuntu-22.04
21+
args: ''
22+
- platform: windows-latest
23+
args: ''
24+
25+
runs-on: ${{ matrix.platform }}
26+
27+
steps:
28+
- uses: actions/checkout@v4
29+
30+
- name: Setup Node.js
31+
uses: actions/setup-node@v4
32+
with:
33+
node-version: 22
34+
35+
- name: Install Rust stable
36+
uses: dtolnay/rust-toolchain@stable
37+
with:
38+
targets: ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }}
39+
40+
- name: Install Linux dependencies
41+
if: matrix.platform == 'ubuntu-22.04'
42+
run: |
43+
sudo apt-get update
44+
sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf
45+
46+
- name: Install root dependencies
47+
run: npm ci
48+
49+
- name: Install UI dependencies
50+
working-directory: ui
51+
run: npm ci
52+
53+
- name: Build UI
54+
working-directory: ui
55+
run: npm run build
56+
env:
57+
TAURI_ENV_PLATFORM: true
58+
59+
- name: Build Tauri app and create release
60+
uses: tauri-apps/tauri-action@v0
61+
env:
62+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
63+
with:
64+
tagName: ${{ github.ref_name }}
65+
releaseName: 'Agentlytics ${{ github.ref_name }}'
66+
releaseBody: 'See the assets below to download and install Agentlytics.'
67+
releaseDraft: true
68+
prerelease: false
69+
args: ${{ matrix.args }}

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,10 @@ vite.config.js.timestamp-*
143143
vite.config.ts.timestamp-*
144144
.vite/
145145

146+
# Tauri
147+
src-tauri/target/
148+
src-tauri/gen/
149+
146150
# UI build output (built from ui/ source)
147151
public/assets/
148152
public/index.html

README.md

Lines changed: 16 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,19 @@ npx agentlytics
4343

4444
Opens at **http://localhost:4637**. Requires Node.js ≥ 20.19 or ≥ 22.12, macOS. No data ever leaves your machine.
4545

46+
### Desktop App
47+
48+
Download the native desktop app (no Node.js required):
49+
50+
| Platform | Download |
51+
|----------|----------|
52+
| **macOS** (Apple Silicon) | [`.dmg`](https://github.com/f/agentlytics/releases/latest) |
53+
| **macOS** (Intel) | [`.dmg`](https://github.com/f/agentlytics/releases/latest) |
54+
| **Windows** (64-bit) | [`.msi`](https://github.com/f/agentlytics/releases/latest) |
55+
| **Linux** (x64) | [`.deb` / `.AppImage`](https://github.com/f/agentlytics/releases/latest) |
56+
57+
Built with [Tauri](https://tauri.app) — lightweight, fast, runs entirely on your machine.
58+
4659
```
4760
$ npx agentlytics
4861
@@ -79,7 +92,7 @@ npx agentlytics --collect
7992
- **Deep Analysis** — Tool frequency heatmaps, model distribution, token breakdown, and filterable drill-down analytics
8093
- **Compare** — Side-by-side editor comparison with efficiency ratios, token usage, and session patterns
8194
- **Subscriptions** — Live view of your editor plans, usage quotas, remaining credits, and rate limits across Cursor, Windsurf, Claude Code, Copilot, Codex, and more
82-
- **Relay**Share AI session context across your team via MCP
95+
- **Desktop App**Native macOS, Windows & Linux app via [Tauri](https://tauri.app)
8396

8497
## Supported Editors
8598

@@ -104,89 +117,13 @@ npx agentlytics --collect
104117

105118
> Windsurf, Windsurf Next, and Antigravity must be running during scan.
106119
107-
## Relay
108-
109-
Relay enables multi-user context sharing across a team. One person starts a relay server, others join and share selected project sessions. An MCP server is exposed so AI clients can query across everyone's coding history.
110-
111-
### Start a relay
112-
113-
```bash
114-
npx agentlytics --relay
115-
```
116-
117-
Optionally protect with a password:
118-
119-
```bash
120-
RELAY_PASSWORD=secret npx agentlytics --relay
121-
```
122-
123-
This starts a relay server on port `4638` and prints the join command and MCP endpoint:
124-
125-
```
126-
⚡ Agentlytics Relay
127-
128-
Share this command with your team:
129-
cd /path/to/project
130-
npx agentlytics --join 192.168.1.16:4638
131-
132-
MCP server endpoint (add to your AI client):
133-
http://192.168.1.16:4638/mcp
134-
```
135-
136-
### Join a relay
137-
138-
```bash
139-
cd /path/to/your-project
140-
npx agentlytics --join <host:port>
141-
```
142-
143-
If the relay is password-protected:
144-
145-
```bash
146-
RELAY_PASSWORD=secret npx agentlytics --join <host:port>
147-
```
148-
149-
Username is auto-detected from `git config user.email`. You can override it with `--username <name>`.
150-
151-
You'll be prompted to select which projects to share. The client then syncs session data to the relay every 30 seconds.
152-
153-
### MCP Tools
154-
155-
Connect your AI client to the relay's MCP endpoint (`http://<host>:4638/mcp`) to access these tools:
156-
157-
| Tool | Description |
158-
|------|-------------|
159-
| `list_users` | List all connected users and their shared projects |
160-
| `search_sessions` | Full-text search across all users' chat messages |
161-
| `get_user_activity` | Get recent sessions for a specific user |
162-
| `get_session_detail` | Get full conversation messages for a session |
163-
164-
Example query to your AI: *"What did alice do in auth.js?"*
165-
166-
### Relay REST API
167-
168-
| Endpoint | Description |
169-
|----------|-------------|
170-
| `GET /relay/health` | Health check and user count |
171-
| `GET /relay/users` | List connected users |
172-
| `GET /relay/search?q=<query>` | Search messages across all users |
173-
| `GET /relay/activity/:username` | User's recent sessions |
174-
| `GET /relay/session/:chatId` | Full session detail |
175-
| `POST /relay/sync` | Receives data from join clients |
176-
177-
> Relay is designed for trusted local networks. Set `RELAY_PASSWORD` env on both server and clients to enable password protection.
178-
179120
## How It Works
180121

181122
```
182123
Editor files/APIs → editors/*.js → cache.js (SQLite) → server.js (REST) → React SPA
183124
```
184125

185-
```
186-
Relay: join clients → POST /relay/sync → relay.db (SQLite) → MCP server → AI clients
187-
```
188-
189-
All data is normalized into a local SQLite cache at `~/.agentlytics/cache.db`. The Express server exposes read-only REST endpoints consumed by the React frontend. Relay data is stored separately in `~/.agentlytics/relay.db`.
126+
All data is normalized into a local SQLite cache at `~/.agentlytics/cache.db`. The Express server exposes read-only REST endpoints consumed by the React frontend.
190127

191128
## API
192129

@@ -208,6 +145,7 @@ All endpoints accept optional `editor` filter. See **[API.md](API.md)** for full
208145

209146
- [ ] **Offline Windsurf/Antigravity support** — Read cascade data from local file structure instead of requiring the app to be running (see below)
210147
- [ ] **LLM-powered insights** — Use an LLM to analyze session patterns, generate summaries, detect coding habits, and surface actionable recommendations
148+
- [x] **Desktop app** — Native macOS, Windows & Linux app via Tauri
211149
- [ ] **Linux & Windows support** — Adapt editor paths for non-macOS platforms
212150
- [ ] **Export & reports** — PDF/CSV export of analytics and session data
213151
- [x] **Cost tracking** — Estimate API costs per editor/model based on token usage

0 commit comments

Comments
 (0)