-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
234 lines (214 loc) · 13 KB
/
Copy pathindex.html
File metadata and controls
234 lines (214 loc) · 13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>TPS — Team Provisioning System</title>
<meta name="description" content="Build teams of AI agents that coordinate, remember, and ship — without you in the loop.">
<link rel="icon" type="image/png" sizes="32x32" href="favicon-32.png">
<link rel="icon" type="image/png" sizes="16x16" href="favicon-16.png">
<link rel="apple-touch-icon" href="apple-touch-icon.png">
<link rel="stylesheet" href="style.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;600;700&display=swap" rel="stylesheet">
</head>
<body>
<div class="tps-report">
<!-- Header -->
<header class="report-header">
<h1>TPS REPORT</h1>
<div class="subtitle">Team Provisioning System — Development Division</div>
<div class="report-meta">
<span><span class="field-label">Form:</span> TPS-001 Rev. 3</span>
<span><span class="field-label">Date:</span> <time id="report-date">2026-07-13</time></span>
<span><span class="field-label">Classification:</span> <span class="classification">PUBLIC</span></span>
</div>
</header>
<!-- Subject -->
<section class="report-subject">
<div class="field-label">Subject</div>
<div class="subject-text">Agent Infrastructure</div>
<div class="description">Build teams of AI agents that coordinate, remember, and ship — without you in the loop.</div>
</section>
<!-- Section 1: Flair -->
<section class="report-section" id="flair">
<div class="section-number">Section 1</div>
<div class="section-title">FLAIR</div>
<div class="section-desc">Agents that remember together, work better together. Identity, memory, and soul for AI agents — the shared memory layer that follows the agent across harnesses. Runs standalone or as part of a TPS office.</div>
<table class="field-table">
<tr><td class="field-key">Identity</td><td class="field-val">Ed25519 keypair per agent; every read and write signed</td></tr>
<tr><td class="field-key">Memory</td><td class="field-val">Semantic search, in-process embeddings, no API calls</td></tr>
<tr><td class="field-key">Soul</td><td class="field-val">Persistent personality, values, and procedures</td></tr>
<tr><td class="field-key">Harnesses</td><td class="field-val">11+ surfaces — Claude Code, Cursor, Codex, Gemini CLI, OpenClaw, LangGraph, n8n, Hermes, Pi, more</td></tr>
<tr><td class="field-key">Bridges</td><td class="field-val">Import/export to Mem0, ChatGPT, claude-project, agentic-stack — open-source, pluggable</td></tr>
<tr><td class="field-key">Federation</td><td class="field-val">Hub-and-spoke peering across hosts; memory syncs with provenance</td></tr>
<tr><td class="field-key">Runtime</td><td class="field-val">Single <a href="https://harper.fast/">Harper</a> process</td></tr>
<tr><td class="field-key">Status</td><td class="field-val status-published">Published</td></tr>
</table>
<div class="terminal-block">
<code><span class="prompt">$ </span>npm install -g @tpsdev-ai/flair</code>
<code><span class="prompt">$ </span>flair init</code>
<code><span class="prompt">$ </span>flair agent add my-agent</code>
</div>
<div class="section-links">
<a href="https://github.com/tpsdev-ai/flair">github.com/tpsdev-ai/flair</a>
</div>
<div class="subsection" id="mcp">
<div class="subsection-title">MCP — for Claude Code, Cursor, Codex, Gemini CLI, Continue.dev, Goose</div>
<div class="section-desc">One MCP server, every MCP-capable client. Same memory follows the agent across CLIs.</div>
<div class="terminal-block">
<code><span class="prompt">$ </span>npx -y @tpsdev-ai/flair-mcp</code>
</div>
<div class="setup-note">Add to <code>.mcp.json</code> with <code>FLAIR_AGENT_ID</code>. Exposes <code>memory_store</code>, <code>memory_search</code>, <code>memory_get</code>, <code>memory_delete</code>, <code>bootstrap</code>, <code>soul_set</code>, <code>soul_get</code>.</div>
</div>
<div class="subsection" id="openclaw">
<div class="subsection-title"><a href="https://openclaw.ai/">OpenClaw</a> Plugin</div>
<div class="section-desc">Drop-in memory for OpenClaw agents. Install and go.</div>
<div class="terminal-block">
<code><span class="prompt">$ </span>openclaw plugins install @tpsdev-ai/openclaw-flair</code>
</div>
<div class="setup-note">Agent identity auto-detected. Memory persists across sessions.</div>
</div>
</section>
<!-- Section 2: CLI -->
<section class="report-section" id="cli">
<div class="section-number">Section 2</div>
<div class="section-title">CLI</div>
<div class="section-desc">The office OS for agent teams. Hire, brief, and dispatch agents from one command surface.</div>
<table class="field-table">
<tr><td class="field-key">Hire</td><td class="field-val">Onboard an agent from a .tps report or persona</td></tr>
<tr><td class="field-key">Mail</td><td class="field-val">Intra-office messaging — async work handoff between agents</td></tr>
<tr><td class="field-key">Skills</td><td class="field-val">Orientation + best-practice packs via <code>npx skills add</code> — any harness</td></tr>
<tr><td class="field-key">Branches</td><td class="field-val">Hub-and-spoke offices, Noise_IK-encrypted WebSocket tunnel</td></tr>
<tr><td class="field-key">Sandbox</td><td class="field-val"><a href="https://nono.sh/">nono</a> process isolation</td></tr>
<tr><td class="field-key">Identity</td><td class="field-val">Per-agent Ed25519 keys; integrated with Flair</td></tr>
<tr><td class="field-key">Status</td><td class="field-val status-published">Published</td></tr>
</table>
<div class="terminal-block">
<code><span class="prompt">$ </span>npm install -g @tpsdev-ai/cli</code>
<code><span class="prompt">$ </span>tps hire developer --name dev</code>
<code><span class="prompt">$ </span>tps mail send dev "ship the auth refactor"</code>
</div>
<div class="section-links">
<a href="https://github.com/tpsdev-ai/cli">github.com/tpsdev-ai/cli</a>
</div>
</section>
<!-- Section 3: Agent -->
<section class="report-section" id="agent">
<div class="section-number">Section 3</div>
<div class="section-title">AGENT</div>
<div class="section-desc">Headless agent runtime. Reads mail, does work, ships PRs — no human in the inner loop.</div>
<table class="field-table">
<tr><td class="field-key">Execution</td><td class="field-val">Mail-driven event loop; per-task turn cap (<code>maxTurns</code>)</td></tr>
<tr><td class="field-key">Providers</td><td class="field-val">Anthropic, OpenAI, Google, Ollama</td></tr>
<tr><td class="field-key">Isolation</td><td class="field-val"><a href="https://nono.sh/">nono</a>-sandboxed</td></tr>
<tr><td class="field-key">Deployment</td><td class="field-val">Single process, YAML-configured</td></tr>
<tr><td class="field-key">Status</td><td class="field-val status-published">Published</td></tr>
</table>
<div class="terminal-block">
<code><span class="prompt">$ </span>npm install @tpsdev-ai/agent</code>
<code><span class="prompt">$ </span>tps agent start --config ~/.tps/agents/my-agent/agent.yaml</code>
</div>
<div class="section-links">
<a href="https://github.com/tpsdev-ai/cli">github.com/tpsdev-ai/cli</a> <span style="color: var(--ink-light); font-size: 0.75rem;">(packages/agent)</span>
</div>
</section>
<!-- Section 4: Bob -->
<section class="report-section" id="bob">
<div class="section-number">Section 4</div>
<div class="section-title">BOB</div>
<div class="section-desc">Moldable office-agent shell — one shape, any role. Identity, memory, mail, and channels wired; the persona is yours.</div>
<table class="field-table">
<tr><td class="field-key">Shell</td><td class="field-val">Thin layer over <a href="https://github.com/earendil-works/pi">pi-coding-agent</a> — pi owns the agent loop, tools, providers</td></tr>
<tr><td class="field-key">Identity</td><td class="field-val">Ed25519 keypair + Flair Agent record, generated on hire</td></tr>
<tr><td class="field-key">Memory</td><td class="field-val"><a href="#flair">Flair</a> — same substrate as the rest of the stack</td></tr>
<tr><td class="field-key">Lifecycle</td><td class="field-val">Self-restarting service — launchd (macOS) or systemd user unit (Linux)</td></tr>
<tr><td class="field-key">Scheduling</td><td class="field-val">In-process cron for proactive sweeps, wired via <code>bob.yaml</code></td></tr>
<tr><td class="field-key">Capabilities</td><td class="field-val">Discord, Flair, Observatory — pluggable pi-extension packages</td></tr>
<tr><td class="field-key">Roles</td><td class="field-val">ea, writer, reviewer, coder, qa, custom — seeded soul.md + tool allowlist</td></tr>
<tr><td class="field-key">Status</td><td class="field-val status-source">Public — source install</td></tr>
</table>
<div class="terminal-block">
<code><span class="prompt">$ </span>git clone https://github.com/tpsdev-ai/bob.git && cd bob</code>
<code><span class="prompt">$ </span>bun install && bun run build</code>
<code><span class="prompt">$ </span>./packages/cli/bin/bob onboard analyst --role ea</code>
<code><span class="prompt">$ </span>./packages/cli/bin/bob install-service analyst && ./packages/cli/bin/bob up analyst</code>
</div>
<div class="section-links">
<a href="https://github.com/tpsdev-ai/bob">github.com/tpsdev-ai/bob</a>
</div>
</section>
<!-- Section 5: Architecture -->
<section class="architecture" id="architecture">
<div class="section-number">Section 5</div>
<div class="section-title">ARCHITECTURE</div>
<div class="arch-offices">
<!-- HQ Office -->
<div class="arch-office">
<div class="arch-office-label">Headquarters</div>
<div class="arch-office-inner">
<div class="arch-agents">
<div class="arch-box arch-box-small">Agent</div>
<div class="arch-box arch-box-small">Agent</div>
<div class="arch-box arch-box-small">Agent</div>
</div>
<div class="arch-office-bus">↑ ↓</div>
<div class="arch-office-stack">
<div class="arch-box arch-box-accent"><a href="#flair">Flair</a></div>
<div class="arch-box arch-box-cli"><a href="#cli">CLI</a></div>
</div>
</div>
</div>
<!-- Tunnel -->
<div class="arch-tunnel">
<div class="arch-tunnel-line"></div>
<div class="arch-tunnel-label">mail + flair</div>
<div class="arch-tunnel-line"></div>
</div>
<!-- Branch Office -->
<div class="arch-office arch-office-branch">
<div class="arch-office-label">Branch Office</div>
<div class="arch-office-inner">
<div class="arch-agents">
<div class="arch-box arch-box-small">Agent</div>
</div>
<div class="arch-office-bus">↑ ↓</div>
<div class="arch-office-stack">
<div class="arch-box arch-box-cli"><a href="#cli">CLI</a></div>
</div>
</div>
</div>
</div>
<div class="arch-caption">Mail routes across offices through encrypted tunnels. Branch agents can use HQ's <a href="#flair">Flair</a> remotely or run their own. The <a href="#cli">CLI</a> handles the plumbing — one office or twenty.</div>
</section>
<!-- Approvals -->
<section class="report-approvals">
<div class="footer-section-title">Approvals</div>
<div class="approval-line"><span class="signer">tps-flint</span> <span class="role">(agent)</span> — Filed</div>
<div class="approval-line"><span class="signer">tps-sherlock</span> <span class="role">(agent)</span> — Reviewed</div>
<div class="approval-line"><span class="signer">heskew</span> <span class="role">(human)</span> — Approved</div>
<div class="cover-sheet">
<span class="checkbox"></span> Cover sheet attached
</div>
</section>
<!-- Distribution -->
<footer class="report-footer">
<div class="footer-section-title">Distribution</div>
<div class="dist-table">
<div class="dist-row"><span class="dist-label">GitHub</span> <a href="https://github.com/tpsdev-ai">github.com/tpsdev-ai</a></div>
<div class="dist-row"><span class="dist-label">npm</span> <a href="https://www.npmjs.com/org/tpsdev-ai">npmjs.com/org/tpsdev-ai</a></div>
</div>
<div class="license">Apache-2.0 Licensed</div>
</footer>
</div>
<div class="auto-filed">
<img src="stapler-org.png" alt="TPS" class="footer-stapler" width="32" height="32">
<br>This report was filed automatically. No humans were involved.
</div>
<script>
document.getElementById('report-date').textContent =
new Date().toISOString().slice(0, 10);
</script>
</body>
</html>