AI agents in your private cloud.
Controlled from your phone.

Spin up AI coding agents on your cloud server. Monitor, steer, and review every one from your phone — 24/7, no desktop.
★ Star on GitHub See how it works ↓
2:11
5G ● 69%
Syndic
All 7
2 Active
1 Idle
1 Input
3 Closed
▾ hone
5
+
syndic/ws-7IAeV008xJS98299 · 22h ago
Can you list all prompts in th...
● RUNNING
○ syndic/ws-7IAeV... · 22h
0 turns
Add dark mode to settings
● INPUT
○ syndic/ws-fFmZx... · 4h
Agent waiting for reply
Fix Redis connection pool
IDLE
○ syndic/ws-BbDf2... · 1d
Paused · 86 turns
Update CI pipeline config
CANCELLED
○ syndic/ws-HmY-_... · 1d
Cancelled 1d
Refactor user endpoints
CLOSED
○ syndic/ws-Kp9xR... · 2d
Closed 2d
▾ humza-website
2
+
syndic/ws-mL6Fd... · 1d ago
Build landing page hero
● RUNNING
○ syndic/ws-mL6Fd... · 3h
118 turns
Do I have a package json...
CANCELLED
○ syndic/ws-pQ7nX... · 1d
Cancelled 1d
+ New Task
Fleet
Inbox
Review
Settings
Can you list all prompts in this repo
⑂ hone · syndic/ws-7IA... · claude
● LIVE
Can you list all prompts in this repo
Q
>_
27 tool calls · agent, glob, bash, read
Here are all the prompts in this repo:

Core Prompts (prompts/)

FilePurpose
CALIBRATE.mdConverts generic critique questions into project-specific ones
CRITIC.mdTemplate for blocking-issues critique session
DEFENDER.mdResponds to critique with VALID / INVALID verdicts
REVIEW_SESSION.mdOrchestrates the Critic → Defender loop
Can you also give me a summary for defender prompt
From the earlier exploration, here's the summary of prompts/DEFENDER.md:

Role

Lead on the project defending the design (not ego).

Core mechanic

For every blocking issue raised by the Critic, respond with one of three verdicts:
· VALID — the issue is real; fix immediately
· INVALID — already handled; cite where
· TRADE-OFF — real limitation, consciously accepted
● Auto-scroll paused
↓ Jump to live
Message the agent...
@
■ Stop
↑ Send
Fleet
Inbox
Review
Settings
I
The
I'm
Q
W
E
R
T
Y
U
I
O
P
A
S
D
F
G
H
J
K
L
Z
X
C
V
B
N
M
123
🌐
🎤

What's inside.

Every Screen, Every Feature

Syndic
Exploration complete. You've seen it all.
10:24
5G ● 87%
10:24
Sunday, April 5
Now Running
agent-3 · features/explore-capabilities
Tap to explore
Dispatch
Fleet
⟩_
CLIs
1
Review
Debug
Security
Budget
Settings
Get the App
Dispatch

Your desktop workflow — from your phone.

Same steps as your desktop — describe the task, choose the repo, launch the agent. Except you're not at your desk.
3:28
5G ●
Can you list all prompts in this repo
⑂ hone · syndic/ws-7IA... · claude ● LIVE
Can you list all prompts in this repo
Q>_ 27 tool calls · agent, glob, bash, read
Here are all the prompts in this repo:
Core Prompts (prompts/)
FilePurpose
CALIBRATE.mdConverts generic critique...
CRITIC.mdTemplate for blocking-issues...
DEFENDER.mdResponds to critique with...
● Auto-scroll paused ↓ Jump to live
Message the agent...
@
■ Stop
3:26
5G ●
Task launched!
Your agent is spinning up.
You'll be notified when it needs you.
TaskCan you list all prompts in...
Repo / Branchhone / main
HarnessClaude Code
Watch in Fleet
+ Launch another task
3:26
5G ●
New Task
Cancel
Repository
hone
main
Description
Can you list all prompts in this repo
Harness
Claude Code
↗ Launch Task
· Describe it. Launch it. Walk away.
· Same workflow as your desktop — just mobile
· Full visibility: every file, every tool call, live
· Works with Claude Code, Codex or OpenCode etc
Fleet

Scale your engineering output without scaling your team.

Point agents at your repos and walk away. Each works independently — own branch, own PR. Check in when you're ready
9:41
5G ●
Syndic
No tasks running
Your fleet is idle. Launch a task to put your agents to work.
+ New Task
FleetActivityReviewSettings
9:41
5G ●
Syndic
3 Active
2 Review
1 Blocked
LUNA
Phase 3B
● running
✎ routes/onboarding.ts · 18m
Phase 2 — Auth
● review
⑂ PR #8 · 22 commits · 18m
APEX
Fix Redis Pool
● running
▷ npm run test · 3m
Update CI Config
↳ merged
✓ Merged 2h ago
FleetActivityReviewSettings
9:41
5G ●
Syndic
3 Active
2 Review
1 Blocked
▽ Filtered: Review
LUNA
Phase 2 — Auth
● review
⑂ PR #8 · 22 commits · 18m
APEX
Fix Redis Pool
● review
⑂ PR #9 · 4 commits · 1h
FleetActivityReviewSettings
· Parallel execution across repos — no bottlenecks
· Each agent is isolated: own branch, own worktree
· Choose the right CLI for each task
· Budget guardrails so costs never surprise you
CLIs

Your favorite coding agents baked in

Run Claude on one task, Codex on another. Spread cost across providers. Swap CLIs without changing your workflow.
3:10
5G ●
AI CLIs
Claude Code
● ready
Codex CLI
● needs auth
Run codex login on server
GITHUB
humzakhan
Scopes: repo
Rate limit: 4,998 remaining
SECURITY
87
/100 · 7/8 checks passed
FleetInboxReviewSettings
3:10
5G ●
← Claude Code
Claude Code
2.1.89 (Claude Code)
● Ready
Usage
Settings
MODEL
Default model
Used for new workspaces
Sonnet 4.6
Thinking mode
Extended uses more tokens
Auto
Review model
Used for code review
Sonnet 4.5
SESSION DEFAULTS
Start in plan mode
Agent plans before executing
Compact mode
Tips card + idle warnings
Max turns
Per session limit
200 ›
3:11
5G ●
Syndic
All 4
0 Active
New Task
Cancel
HARNESS
Claude Code
2.1.89 · Ready
Claude Code
Selected ▲
↗ Launch Task
☰ Advanced
FleetInboxReviewSettings
· Claude Code, Codex, OpenCode — all supported
· Mix and match CLIs across tasks and repos
· Rotate between API subscriptions to manage spend
Review · Merge

PR lands. You review the diff. You merge. All from your phone.

Review diffs, approve PRs, merge from your phone. Ship while you walk
9:41
5G ●
Merge PR #8
● CI PASSING
feat: add auth middleware · luna · 22 commits
MERGE STRATEGY
Squash and merge
Combine all commits into one
Merge commit
Rebase and merge
Face ID required to confirm merge.
↗ Confirm Merge
9:41
5G ●
← routes/auth.ts Line 21 selected
18 req: Request, res: Response, next: ...
+ const token = req.headers.authoriza...
21 | if (!token) return res.status(401)
+ await verifyJWT(token, process.env....
+ next()
◎ you · 2m ago
Should we return a 403 here instead of 401?
Good point — 401 is correct here since the token is missing entirely.
MarkdownCancelPost
↗ Merge
1 Comment
✕ Reject
9:41
5G ●
← PR #8 · 3 files
◫ routes/auth.ts
+48 -12
File 1 of 3 · 3 hunks ‹ › ≡
@@ -14,8 +14,12 @@ import { db } from...
14 import { Request, Response } from '...
15 import { z } from 'zod'
+ import { verifyJWT, signJWT } from ...
+ import { rateLimit } from '../middl...
17 export const authMiddleware = async...
18 req: Request, res: Response
+ req: Request, res: Response, next: ...
+ ) => {
+ const token = req.headers.authoriza...
19 ) => {
20 const t = req.query.token as string
21 if (!token) return res.status(401)
+ await verifyJWT(token, process.env....
+ next()
↗ Merge
◻ Comment
✕ Reject
FleetActivityReviewSettings
9:41
5G ●
Review
2 PR
Phase 2 — Auth + CRUD
PR #8
luna · 22 commits · 3 files · 18m ago
✓ Tests passing ✓ CI green
+187 -34feat/auth
↗ Merge
✕ Reject
Fix Redis Pool
PR #9
apex · 4 commits · 1 file · 1h ago
↻ CI running...
+24 -8fix/redis
FleetActivityReviewSettings
· Full diff viewer with syntax highlighting
· Inline comments the agent picks up
· CI status at a glance
· One-tap merge (squash, rebase, or merge commit)
· Post-merge: chain the next task immediately
Logs & Debug

Something broke. You already know why.

Server logs, live on your phone. Spot crashes, failed tests, timeouts — search, fix, done. No laptop, no SSH.
12:56
5G ●
← Activity Monitor
syndic-betaup 5d 18h 12m
CPU
Usage
0.6%
Load
0.01
MEMORY
RAM
0.8 / 7.6 GB
DISK
/
3.7 / 74.8 GB
NETWORK
↓ In
0 MB/s
↑ Out
0 MB/s
PROCESSES
Running
2
Total
133
12:56
5G ●
← Logs
● live
07:13:13 [info] provider_health_check...
07:13:13 [debug] codex_api_key_check...
07:18
07:18:14 [debug] claude_credentials...
07:18:14 [info] provider_health_check...
07:22
INFO: 47.83.221.47 – "GET / HTTP/1.1" 404
INFO: 47.83.221.47 – "GET /favicon.ico" 404
07:23
07:23:15 [debug] claude_credentials...
07:23:15 [info] provider_health_check...
07:28
07:28:15 [debug] codex_api_key_check...
07:28:15 [info] provider_health_check...
● journalctl -f · 92 linesPause
FleetActivityReviewSettings
· Live log streaming — every event, as it happens
· Search across all output instantly
· See the full error trail, not just a notification
· Retry failed tasks directly from the log view
Security

Your agents run in your cloud. Your keys never leave it.

Your VM, your keys, your code. No cloud relay, no intermediary. Syndic scans your server on a schedule and shows the results on your phone — so you catch issues without SSH-ing in.
· Zero data on external servers — there are no external servers
· Automated security scans, results on your phone
· Certificate, firewall, and port checks on a schedule
· Direct phone-to-server connection over TLS
· QR code pairing — single-use token, expires in 5 minutes
· Biometric app lock

Architecture

Split-brain: the server runs the agent fleet, the phone is a stateless remote control. No intermediary. No cloud relay. Direct connection.
E2E encrypted
No telemetry
No analytics
No tracking
Get Started

Running in under a minute.

One command to install. One QR code to pair your phone. That's it.
$ curl -fsSL https://get.syndic.dev | sh
$ syndic init
· Install the server daemon on any Linux VM
· Scan the QR code with the mobile app
· Add your repos and API keys
· Dispatch your first agent

Fleet management platform for the AI coding era.

Free and open source. MIT licensed. No account required.

★ Star on GitHub Read the Docs
Budget

Know what your agents cost — before it surprises you.

Track spend by day, week, and month. See exactly which agents are burning through tokens.
9:41
5G ●
‹ Settings Usage
Claude
Max 5×
Session
94% CriticalRuns out in 6m
Weekly
88%Runs out in 2h
Extra usage
$27.60$30 limit · near cap
Today
$89.20
188M tokens
Last 30 days
$3,812.44
7.8B tokens
9:41
5G ●
‹ Settings Usage
Claude
Max 5×
Session
51%Resets in 2h 27m
Weekly
60%1% in deficit
Extra usage
$10.54$30 limit
Today
$45.16
95M tokens
Yesterday
$30.86
69M tokens
Last 30 days
$2,202.78
3.7B tokens
· Daily, weekly, and monthly spend tracking
· Breakdown by provider: Anthropic, OpenAI eyc
· Set budget caps — agents pause when limits hit
Settings

Your server, your rules.

Configure repos, API keys, default CLIs, notification preferences, and pairing — all from your phone.
12:58
5G ●
← hone
H
hone
github.com/humzakhan/hone.git
⑂ main
SCRIPTS
Setup script not set
Runs once when a worktree is created
AGENT INSTRUCTIONS
Pre-task instructions
Prepended to every new task
Review instructions
Sent to agent at review pass
REPOSITORY
Default branch
main ›
⊘ Remove Repository
12:59
5G ●
← Claude Code
Claude Code
2.1.89 (Claude Code)
● Ready
Usage
Settings
MODEL
Default model
Used for new workspaces
Sonnet 4.6
Thinking mode
Extended uses more tokens
Auto
Review model
Sonnet 4.5
SESSION DEFAULTS
Start in plan mode
Compact mode
Max turns
200 ›
12:58
5G ●
Settings
APPEARANCE
Theme
Ash
REPOSITORIES
hone
main · 1 active tasks
/var/syndic/repos/hone
humza-website
main · 0 active tasks
+ Add Repository
AI CLIS
Claude Code
● ready
Codex CLI
● needs auth
FleetInboxReviewSettings
· Manage repos and branches
· Add and rotate API keys
· Set default CLI per repo
· Pair new devices via QR code