eleven / ocho Public

agent: give Eleven size/LOC stats about itself (#220)

Add a dated "By the numbers" block to Eleven's app knowledge (§16) with the
project's line count and the deployable binary / native-app sizes, so Eleven
can answer "how big is Eleven?" accurately from a single, easy-to-refresh place.
Add a CLAUDE.md convention to re-measure and update the figures periodically.
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Paul Campbell afcc8a5f541116cdf4d9cdfeb28c0f7b67aefdc0 parent d542479
2 files changed, +27 −0
  • CLAUDE.md +5 −0
  • agent/knowledge.mjs +22 −0
diff --git a/CLAUDE.md b/CLAUDE.md
index 66af338..2116fb2 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -178,6 +178,11 @@ decision lives there, not spread through `shell.js`.
conflict). Entries are embedded in the binary and served at `/api/changelog`;
the deploy announcer bot posts new ones to its groups after a deploy, so write
them for members, not developers.
+- **Refresh Eleven's stats periodically.** `agent/knowledge.mjs` §16 has a *"By
+ the numbers"* block (LOC + binary/app sizes) that Eleven quotes to members. The
+ figures are hand-measured and drift every release, so re-measure and update
+ them (and the "as of" date) every so often — a quick `git ls-files '*.go' …|
+ wc -l` for lines, and `du -h` on the built binaries / `.app` bundles for sizes.
## Build & test
diff --git a/agent/knowledge.mjs b/agent/knowledge.mjs
index e20a11b..0632724 100644
--- a/agent/knowledge.mjs
+++ b/agent/knowledge.mjs
@@ -620,6 +620,28 @@ For anyone curious about the engineering — it's all open source:
reimplements just the identity crypto in Swift, gated by cross-implementation
test vectors so it can't drift from the web format.
+### By the numbers (as of July 2026)
+
+Concrete figures for when someone asks "how big is Eleven?" — these are
+hand-measured and drift a little every release, so quote them as *about*:
+
+- **Source: ~44,000 lines of code** across the whole project (~37,000 if you
+ leave out the test suites). Roughly: the web frontend is ~15,000 lines of
+ vanilla JavaScript, the Go server ~10,000, the native iOS/Mac apps ~6,000
+ lines of Swift, and the helper-bot sidecar ~2,000 lines of Node.
+- **The server is a single static binary of ~18 MB** (~12 MB stripped) — that
+ one file *is* the whole app: the frontend, a built-in database engine, and all
+ the server logic, with no other dependencies. Self-hosting a chat is copying
+ that one file onto a box. The optional sibling services are the same order of
+ size (the central push relay ~9 MB, the passkey-backup server ~10 MB).
+- **The native apps are tiny because they're thin shells** — the interface
+ streams from the server (§15), so the code that ships is just the native
+ frame. The **iPhone/iPad app is ~1.3 MB** and the **Mac app is ~2.2 MB** to
+ download.
+
+The design shows up in the numbers: the entire end-to-end-encrypted chat server
+fits in one ~18 MB file, and the phone app is smaller than a single photo.
+
---
## 17. How it's deployed (design)