-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathode.html
More file actions
164 lines (111 loc) · 9.89 KB
/
ode.html
File metadata and controls
164 lines (111 loc) · 9.89 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
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>The Single-File Agent</title>
<meta name="description" content="Why one .py file is the only pattern that scales to everyone. An ode to the agent that fits in your pocket.">
<meta property="og:title" content="The Single-File Agent">
<meta property="og:description" content="Why one .py file is the only pattern that scales to everyone. The ode to agent.py.">
<meta property="og:type" content="article">
<meta property="og:url" content="https://kody-w.github.io/RAR/ode.html">
<style>
:root{--bg:#0d1117;--s1:#161b22;--bd:#30363d;--tx:#c9d1d9;--h:#e6edf3;--dim:#8b949e;--acc:#58a6ff}
*{margin:0;padding:0;box-sizing:border-box}
body{font-family:Georgia,'Times New Roman',serif;background:var(--bg);color:var(--tx);min-height:100vh;line-height:1.8}
.page{max-width:640px;margin:0 auto;padding:60px 24px 80px}
h1{font-size:32px;color:var(--h);font-weight:400;margin-bottom:8px;letter-spacing:-0.5px}
.subtitle{color:var(--dim);font-size:15px;font-style:italic;margin-bottom:48px}
h2{font-size:20px;color:var(--h);font-weight:400;margin:40px 0 16px;letter-spacing:-0.3px}
p{margin-bottom:20px;font-size:17px}
.highlight{color:var(--acc)}
.quiet{color:var(--dim)}
blockquote{border-left:2px solid var(--acc);padding:12px 20px;margin:24px 0;font-style:italic;color:var(--dim)}
code{font-family:'SF Mono',Menlo,monospace;background:var(--s1);padding:2px 6px;border-radius:4px;font-size:14px;color:var(--acc)}
.poem{font-style:italic;color:var(--dim);line-height:2;margin:32px 0;padding-left:20px;border-left:1px solid var(--bd)}
.break{text-align:center;color:var(--bd);margin:40px 0;letter-spacing:8px;font-size:12px}
.coda{margin-top:48px;padding-top:32px;border-top:1px solid var(--bd);text-align:center;color:var(--dim);font-size:14px}
.coda a{color:var(--acc);text-decoration:none}
@media(max-width:600px){
.page{padding:32px 16px 60px}
h1{font-size:26px}
p{font-size:16px}
}
</style>
</head>
<body>
<div class="page">
<h1>The Single-File Agent</h1>
<p class="subtitle">Why agent.py is the only pattern that scales to all of humanity</p>
<p>There is a file. It is 200 lines of Python. It has a name, a description, a class, and one method called <code>perform()</code>. It does not need a build step. It does not need a package manager. It does not need Docker, Kubernetes, a cloud account, a credit card, or a computer science degree.</p>
<p>It is an agent. It fits in your pocket. And it is the most important idea in AI right now.</p>
<div class="break">* * *</div>
<h2>The problem with how AI works today</h2>
<p>Right now, to use an AI agent, you need to understand APIs, tokens, endpoints, SDKs, dependency management, virtual environments, container orchestration, cloud billing, and rate limiting. You need to understand what a <code>requirements.txt</code> is. You need to know what <code>pip install</code> means. You need to know why your Python version doesn't match the one in the README.</p>
<p>This is not a problem for engineers at technology companies. This is an insurmountable wall for everyone else.</p>
<p>A teacher in rural Oklahoma who wants an AI that helps grade essays cannot use the current patterns. A farmer in sub-Saharan Africa who wants an AI that identifies crop disease cannot use the current patterns. A retired veteran who wants a digital companion that remembers their stories cannot use the current patterns.</p>
<p>Not because the AI doesn't exist. <span class="highlight">Because the packaging doesn't work for them.</span></p>
<div class="break">* * *</div>
<h2>What npm got right and where it broke</h2>
<p>npm proved that a global package registry changes everything. Suddenly anyone could share code and anyone could use it. <code>npm install left-pad</code> and you're done. Beautiful.</p>
<p>Then left-pad got unpublished and half the internet broke. Then <code>node_modules</code> grew to 500MB for a hello world app. Then supply chain attacks started hiding malware in transitive dependencies six levels deep. Then you needed Node 18 but the package needed Node 16 but another package needed Node 20.</p>
<p>npm scaled the registry. It did not scale the user. The complexity just moved from "how do I write code" to "how do I manage 1,847 packages I didn't ask for."</p>
<p>Docker tried to fix this by shipping the entire operating system with every app. Now instead of managing dependencies, you're managing container images. The farmer in sub-Saharan Africa is not running a Docker daemon.</p>
<div class="break">* * *</div>
<h2>The sneakernet test</h2>
<p>Here is the test that every AI distribution pattern must pass:</p>
<blockquote>Can someone with a phone and no internet connection receive an AI agent, understand what it does, and use it?</blockquote>
<p>This is the sneakernet test. Named after the oldest network protocol: walking a floppy disk from one computer to another in your sneakers.</p>
<p>A Docker image fails this test. A <code>pip install</code> from PyPI fails this test. An API endpoint fails this test. A 47-file repository with a Makefile, three YAML configs, and a README that starts with "Prerequisites" fails this test.</p>
<p>A single <code>.py</code> file passes it.</p>
<p>You can text it. AirDrop it. Put it on a USB stick. Email it. Print it as a QR code. Read it out loud over the phone. Copy it by hand on paper if you have to. The file arrives. It works. There is nothing to install, nothing to configure, nothing to debug.</p>
<p><span class="highlight">The file is the package. The file is the manifest. The file is the documentation. The file is the agent.</span></p>
<div class="break">* * *</div>
<h2>Why single-file is not a limitation</h2>
<p>When people first hear "single-file agent," they think it's a toy. A constraint for demos. Something you'd grow out of once you build "real" software.</p>
<p>They are wrong. The constraint is the feature.</p>
<p>A single file means there is no dependency tree. No dependency tree means no supply chain attacks. No supply chain attacks means you can trust code from a stranger on the internet — which is exactly what a global agent registry needs.</p>
<p>A single file means the entire agent can be read by a human in ten minutes. It means an AI can read it in two seconds. It means you can audit every agent in a registry of ten thousand agents in an afternoon. Try that with npm.</p>
<p>A single file means the agent can be AST-parsed without executing it. You never have to run untrusted code to know what it claims to do. The manifest is right there, in the same file, in a Python dictionary. No separate <code>package.json</code>. No <code>setup.py</code>. No <code>pyproject.toml</code>. The code and the metadata travel together, always.</p>
<p>A single file means you can fork an agent by copying it. You can modify it by opening it in any text editor. You can understand it by reading it. There is no hidden build process, no transpilation, no webpack config, no magic.</p>
<div class="break">* * *</div>
<h2>The card in your pocket</h2>
<p>Every agent has a seed. The seed is a number. From that number, the entire card self-assembles: its type, its stats, its abilities, its weakness, its rarity. The same seed produces the same card everywhere, every time, on every device, with zero network.</p>
<p>You can write the seed on a napkin. You can tattoo it on your arm. You can whisper it to someone across a crowded room. They type the number into their phone. The card appears. The agent is real.</p>
<p>This is not a feature of the software. This is a property of the mathematics. The seed is deterministic. The algorithm is public. No server is involved. No company can take it away.</p>
<p>The agent outlives the server. The agent outlives the company. <span class="highlight">The agent outlives you.</span></p>
<div class="break">* * *</div>
<h2>What this means for humanity</h2>
<p>The last thirty years of software have been about making powerful tools that require powerful people to use them. Cloud platforms that require cloud architects. AI models that require ML engineers. Deployment pipelines that require DevOps teams.</p>
<p>The single-file agent inverts this.</p>
<p>It says: the unit of AI is not a platform, not a service, not an API. The unit of AI is a file. A file that anyone can read, anyone can share, anyone can run. A file that works on a $50 phone the same as it works on a $5,000 workstation. A file that works in a Manhattan office the same as it works in a village with intermittent electricity and no internet.</p>
<p>When you remove the infrastructure, you remove the gatekeepers. When you remove the gatekeepers, you get the thing that every technology revolution promises but almost none deliver: <span class="highlight">actual accessibility.</span></p>
<p>Not "accessible if you have broadband and a GitHub account." Not "accessible if you understand YAML." Not "accessible after a 45-minute onboarding tutorial."</p>
<p>Accessible like a book is accessible. You hand it to someone. They open it. It works.</p>
<div class="break">* * *</div>
<div class="poem">
One file.<br>
One class.<br>
One method.<br>
One promise: <em>perform.</em><br>
<br>
No build. No deploy. No config. No auth.<br>
No containers. No clusters. No cloud.<br>
<br>
Just the agent.<br>
Just the seed.<br>
Just the card in your pocket<br>
that outlives every server<br>
that ever tried to own it.
</div>
<div class="break">* * *</div>
<p class="quiet">This is RAPP. This is the RAPP Agent Registry. 133 agents. 7 publishers. 19 categories. Every one of them is a single <code>.py</code> file. Every one of them has a card. Every card has a seed. Every seed works offline.</p>
<p class="quiet">The file is the future. And the future fits in your pocket.</p>
<div class="coda">
<a href="index.html">Browse the agents</a> ·
<a href="binder.html">Open your binder</a> ·
<a href="https://github.com/kody-w/RAR">View the source</a>
</div>
</div>
</body>
</html>