# Vary Where the Agent Runs Not Whether It Runs
## Claim
When a fleet spans a wide capability range, the design should move the agent between the device and the center rather than build a separate pipeline for each tier.
<!-- atomicity: 1 idea ✓ -->
## Scope & conditions
- Holds where the agent's work can be performed remotely — scraping instead of pushing, reading instead of running locally — without losing the data that matters.
- PowerX's case spans an eightfold memory range (500MB–4GB) with one pipeline in two topologies: push-from-device where memory allows, pull-from-cloud where it doesn't.
- Breaks where the collection genuinely requires local execution (host-level introspection, data that cannot leave the device), or where the remote pattern's network cost exceeds what the local pattern would have cost in memory.
## Evidence
PowerX runs 2,000+ heterogeneous EV-charging and grid-battery edge devices as K3s worker nodes. Rather than building different observability stacks for capable versus constrained hardware, they run one OpenTelemetry-to-Prometheus pipeline and vary only where the collector sits: as a DaemonSet on-device (push) for devices with headroom, or as a cloud-side deployment scraping the device (pull) for memory-constrained ones. Three years in production; the disclosed cost is ~700MB/device/day of network overhead.
## Links
- [[3. Resources/Literature Notes/Large-Scale Edge Management with Kubernetes (PowerX)]] — source talk and full evidence
- [[3. Resources/MOCs/Open Source Governance MOC]] — because applies-in; a reusable pattern for any heterogeneous-fleet tooling design in an open source operations context
## Tests / falsifiers
- Find a heterogeneous fleet where push/pull collector placement was tried and failed — if the remote pattern's bandwidth cost consistently exceeded the local pattern's memory cost, the pattern doesn't generalize as cleanly as claimed.
- Check whether the 700MB/device/day figure, once decomposed, is dominated by something collector-placement can't affect (e.g., control-plane chatter) — that would mean the pattern optimizes the wrong variable.
## Maintenance
- Last tended: 2026-08-16
- Next review: 2026-11-16
## Source
- [[3. Resources/Literature Notes/Large-Scale Edge Management with Kubernetes (PowerX)]] — KubeCon + CloudNativeCon Japan 2026 talk, Ryota Yonekura (PowerX)