-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
212 lines (193 loc) · 11.6 KB
/
Copy pathindex.html
File metadata and controls
212 lines (193 loc) · 11.6 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
<!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-03-18</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">Identity, memory, and soul for AI agents — the 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 (nomic search-prefixes on by default), 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">Graph</td><td class="field-val">Relationship triples — agent-writable, assert/upsert, temporal bounds</td></tr>
<tr><td class="field-key">Attention</td><td class="field-val">"What's touching X?" — one query across memories, relationships, active work, presence, events; bootstrap flags teammates on the same entities</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, Letta, claude-project, ChatGPT — 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">Upgrades</td><td class="field-val">Zero-touch — data self-migrates at boot; resumable, downgrade-safe, kill-tested in CI</td></tr>
<tr><td class="field-key">Recall</td><td class="field-val">126-query ground-truth benchmark, frozen baseline; standalone <code>flair-bench</code> tool ships in the repo</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 — v[VERSION]</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>relationship_store</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">Install packaged skill packs from npm into any agent</td></tr>
<tr><td class="field-key">Branches</td><td class="field-val">Distributed agent offices over Tailscale</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 task loop with per-task timeout + retry</td></tr>
<tr><td class="field-key">Providers</td><td class="field-val">Anthropic, OpenAI, Google, ollama-cloud, ollama, oMLX — pluggable</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">Zero-config, single 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 @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: Architecture -->
<section class="architecture" id="architecture">
<div class="section-number">Section 4</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>