Files
zeekayandHanzo Dev 1d1e7be5ab Two measured papers: what an idle agent costs, and why extra hops do not help
Both report benchmarks that already live in hanzoai/cloud under bench/, so the
numbers have a script behind them rather than a spreadsheet.

hanzo-dormant-agents takes apart the estimate that costs an agent as a process.
State, execution and isolation are separable and differ by five orders of
magnitude: a dormant agent is 477 bytes on disk and resumes in 0.034 ms, a
parked loop is 601 bytes of heap, and the isolation boundary — the expensive
one — is only owed by an agent actually running. The paper argues the container
is worth its price where it is needed and says so; the claim is about which
agents are charged for it.

hanzo-multi-hop-retrieval is a negative result. On LoCoMo a dense retriever
finds every required turn for 78.2% of single-hop questions and 22.7% of
multi-hop ones, but finds at least one required turn about 80% of the time in
both — so it understands the questions and cannot reach all of the answer. Four
retrieval policies over one fixed index move that by at most 0.7 points and two
make it worse. A diagnostic says why it was never going to work: 95.4% of
multi-hop evidence spans sessions and the median worst-ranked gold turn sits at
rank 67, so the missing signal is linkage rather than similarity. Publishing the
dead end is the useful part.

Each paper carries results-data.tex, generated from the runs, and prints XXX in
place of any constant that file does not supply — a number cannot drift from its
measurement without the drift showing on the page. Both compile under the CI
gate's flags, -Werror included.

INDEX.md is regenerated by make index, which also picks up the papers added
since it was last written and the header its current generator emits.

Co-authored-by: Hanzo Dev <[email protected]>
2026-09-08 00:06:32 -07:00

78 lines
3.5 KiB
TeX

\section{Capacity, from the measured constants only}
\label{sec:capacity}
The constants in \S\ref{sec:state}--\S\ref{sec:isolation} determine a capacity
model. Everything in this section is \modeled{} --- arithmetic over measured
inputs and stated assumptions --- and nothing in it was observed at the scales
named. We give it because the arithmetic is the point of the decomposition, and
we mark it so that no reader mistakes it for a result.
\subsection{Storage is set by population, and is negligible}
Dormant agents are \rFleetPer{}\,bytes each, so storage is exactly linear in how
many agents exist:
\begin{center}
\begin{tabular}{lrr}
\toprule
\textbf{Registered agents} & \textbf{On disk} & \textbf{At list price/mo} \\
\midrule
$10^6$ & 454.6\,MiB & \$\rFleetStorage{} \meas{}/\modeled{} \\
$10^8$ & 44.4\,GiB & \$0.89 \modeled{} \\
$10^9$ & 444.2\,GiB & \$8.90 \modeled{} \\
\bottomrule
\end{tabular}
\end{center}
A billion registered agents is under half a terabyte and under ten dollars a
month of object storage. Storage is not the constraint and it will not become
the constraint; \S\ref{sec:limits} names the thing that does.
\subsection{Memory is set by concurrency, and the working set dominates}
Live agents cost memory. The measured floor is \rGoPer{}\,bytes, but a working
agent holds context, so the honest model is parameterized by that working set
rather than by the floor. On a 128\,GiB node:
\begin{center}
\begin{tabular}{lrrr}
\toprule
\textbf{Per-agent working set} & \textbf{Live agents/node} & \textbf{$10^9$ reg.\ @ 1\%} & \textbf{@ 0.1\%} \\
\midrule
\rGoPer{}\,B (measured floor) & 228\,M & 1 node & 1 node \\
10\,KiB & 13.4\,M & 1 node & 1 node \\
64\,KiB & 2.1\,M & 5 nodes & 1 node \\
1\,MiB & 131\,k & 77 nodes & 8 nodes \\
\bottomrule
\end{tabular}
\end{center}
\modeled{} throughout. The left column is the one that matters and it is the one
this paper did not measure: a fleet's cost is set by how much context its agents
hold while running, not by the residency floor of the primitive holding them.
What the measurement establishes is that the \emph{floor} contributes nothing ---
at \rGoPer{}\,bytes it is invisible against any realistic working set --- so the
platform's overhead is not the thing to optimize.
The structural claim survives the parameterization: memory tracks the agents
that are \emph{awake}. Under any of these rows, a billion registered agents at
realistic concurrency is a handful of commodity nodes rather than a datacenter,
and the difference between this and the 128\,TB estimate in \S\ref{sec:intro} is
entirely that the estimate charged every registered agent for an isolation
boundary it was not using.
\subsection{What the bill looks like}
At published rates for the always-on control plane --- \rPlaneCpu{}\,vCPU and
\rPlaneRam{}\,GB, \$\rPlaneCost{}/month~\cite{railway} \cited{} --- the fixed
cost of the platform exceeds the storage cost of a billion dormant agents by two
orders of magnitude. In other words, at any population, \emph{the agents are not
the bill}. The bill is the compute for the agents that are awake, plus the item
in \S\ref{sec:limits} that grows without bound.
We state one exclusion emphatically, because omitting it would make every figure
here misleading: \textbf{model tokens are not in this model and they dominate
it.} A single frontier-model call costs cents; the infrastructure under an agent
turn costs microdollars. Any per-call price derived from this paper sits
\emph{beside} token billing and must never be presented as including it.