1
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# Agentic Development
2
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
3
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
FossilRepo is built for AI-assisted development at scale. Traditional Git forges impose rate limits that cripple agent workflows. FossilRepo eliminates these bottlenecks.
4
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
5
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## The Problem
6
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
7
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
AI coding agents make dozens of API calls per task. On GitHub:
8
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- 5,000 API calls/hour limit (agents burn through this in minutes)
9
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- 30 search requests/minute
10
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- Webhook delivery delays
11
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- Actions queue congestion
12
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
13
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Multiple agents working in parallel hit rate limits within seconds.
14
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
15
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## The Solution
16
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
17
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
18
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
AI Agent (Claude Code, Cursor, etc.)
19
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
|
20
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
v
21
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
FossilRepo MCP Server / API <-- zero rate limits
22
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
|
23
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
v
24
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Fossil repos (.fossil SQLite) <-- local disk, instant
25
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
|
26
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
v (scheduled, batched)
27
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Git Mirror --> GitHub <-- rate-limit-aware sync
28
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
29
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
30
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Agents work against FossilRepo locally with no limits. Changes sync to GitHub on a schedule. GitHub becomes a downstream mirror, not the bottleneck.
31
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
32
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Connecting AI Tools
33
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
34
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### MCP Server (Recommended)
35
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
36
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
The MCP server gives AI tools native access to all FossilRepo capabilities.
37
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
38
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```bash
39
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
pip install fossilrepo
40
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
fossilrepo-mcp
41
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
42
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
43
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Claude Code config:
44
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```json
45
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
{
46
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"mcpServers": {
47
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"fossilrepo": {
48
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"command": "fossilrepo-mcp"
49
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
50
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
51
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
52
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
53
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
54
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
17 tools available: browse code, read files, search, manage tickets, view timeline/diffs/blame, create tickets, run SQL queries.
55
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
56
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### JSON API
57
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
58
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
For tools without MCP support:
59
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
60
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
curl -H "Authorization: Bearer frp_abc123..." \
61
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
http://localhost:8000/projects/myproject/fossil/api/timeline
62
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
63
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
64
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### Batch API
65
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
66
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Reduce round-trips by 25x:
67
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```json
68
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
POST /api/batch
69
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
{"requests": [
70
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
{"method": "GET", "path": "/api/timeline"},
71
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
{"method": "GET", "path": "/api/tickets", "params": {"status": "Open"}},
72
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
{"method": "GET", "path": "/api/wiki/Home"}
73
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
]}
74
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
75
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
76
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## The Agent Workflow
77
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
78
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### 1. Discover Work
79
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
80
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Browse open, unclaimed tickets:
81
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
82
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
GET /api/tickets/unclaimed
83
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
84
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
85
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### 2. Claim a Ticket
86
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
87
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Atomic claiming prevents two agents from working on the same thing:
88
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
89
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
POST /api/tickets/<uuid>/claim
90
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
{"agent_id": "claude-session-abc"}
91
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
92
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Returns 200 if claimed, 409 if already taken by another agent.
93
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
94
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### 3. Create an Isolated Workspace
95
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
96
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Each agent gets its own Fossil branch and checkout directory:
97
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
98
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
POST /api/workspaces/create
99
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
{"name": "fix-auth-bug", "agent_id": "claude-session-abc"}
100
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
101
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
102
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
No interference with other agents or the main branch.
103
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
104
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### 4. Do the Work
105
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
106
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Read code, understand context, make changes, commit. All via MCP tools or API:
107
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
108
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
POST /api/workspaces/fix-auth-bug/commit
109
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
{"message": "Fix null check in auth middleware"}
110
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
111
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
112
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### 5. Submit for Review
113
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
114
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
115
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
POST /api/reviews/create
116
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
{
117
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"title": "Fix null pointer in auth module",
118
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"description": "The auth check was failing when...",
119
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"diff": "--- a/src/auth.py\n+++ b/src/auth.py\n...",
120
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"workspace": "fix-auth-bug"
121
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
122
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
123
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
124
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### 6. Review and Merge
125
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
126
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Another agent (or human) reviews:
127
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
128
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
POST /api/reviews/<id>/approve
129
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
POST /api/reviews/<id>/merge
130
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
131
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
132
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### 7. Release the Claim
133
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
134
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
135
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
POST /api/tickets/<uuid>/submit
136
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
{"summary": "Fixed by closing the null check gap"}
137
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
138
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
139
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Real-Time Coordination
140
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
141
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### Server-Sent Events
142
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
143
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Agents subscribe to a live event stream instead of polling:
144
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
145
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
GET /api/events
146
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
147
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
148
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Events:
149
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `checkin` — new commits pushed
150
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `claim` — ticket claimed or released
151
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `workspace` — workspace created, merged, or abandoned
152
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
153
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### Multi-Agent Safety
154
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
155
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
FossilRepo prevents agent collisions through:
156
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
157
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
1. **Atomic ticket claiming** — database-level locking via `select_for_update`. Only one agent can claim a ticket.
158
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
2. **Isolated workspaces** — each agent works on its own Fossil branch in its own checkout directory. No merge conflicts during work.
159
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
3. **Code review gate** — changes must be reviewed (by human or another agent) before merging to trunk.
160
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
4. **Branch protection** — protected branches block non-admin pushes. CI status checks can be required.
161
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
5. **SSE events** — agents know what others are doing in real-time, avoiding duplicate work.
162
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
163
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Comparison with GitHub
164
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
165
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Feature | GitHub | FossilRepo |
166
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
|---------|--------|------------|
167
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| API rate limit | 5,000/hour | Unlimited |
168
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Search rate limit | 30/min | Unlimited |
169
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Agent workspace | Shared branch | Isolated checkout |
170
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Task claiming | None (race conditions) | Atomic (DB-locked) |
171
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Batch API | None | 25 calls/request |
172
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Real-time events | Webhooks (delayed) | SSE (instant) |
173
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Code review | Pull request (heavyweight) | Lightweight API |
174
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| MCP support | No | 17 tools |
175
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| CI status API | Rate-limited | Unlimited |
176
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Self-hosted | No | Yes |
177
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Cost | Per-seat | Free (MIT) |
178
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
179
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Why Fossil for Agents?
180
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
181
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Fossil's architecture is uniquely suited for agentic development:
182
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
183
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- **Single-file repos** — each `.fossil` file is a complete SQLite database. No complex storage, no git pack files, no network dependencies.
184
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- **Built-in everything** — tickets, wiki, forum, technotes all in one file. Agents manage the full development lifecycle without switching tools.
185
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- **SQLite = instant reads** — FossilReader opens the file directly. No API calls, no HTTP, no rate limits. Microsecond latency.
186
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- **Offline-first** — works without internet. Sync to GitHub when ready, on your schedule.
187
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- **Clone = complete backup** — `fossil clone` gives you everything: code, tickets, wiki, forum. One file, one copy.
188
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- **Branching without overhead** — Fossil branches are lightweight metadata, not separate directory trees. Creating 50 agent workspaces costs nothing.
189
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!