Caching Strategies Used in the Shadowbroker Backend: Implementation and Architecture

The Shadowbroker backend employs process-local caching mechanisms—including LRU memoization for configuration, domain-failure circuit breakers, thread-locked flight data stores, and anti-replay nonce caches—to eliminate redundant external API calls and reduce latency without depending on external servers like Redis or Memcached.

The BigBodyCobain/Shadowbroker repository implements a lightweight, containerized backend designed for single-node deployment. All caching strategies used in the Shadowbroker backend are intentionally process-local, leveraging Python’s standard library and threading primitives rather than distributed cache systems. These mechanisms minimize network overhead, protect against abuse, and ensure thread-safe access to frequently accessed data across flight tracking, telemetry, and cryptographic services.

Configuration Memoization with functools.lru_cache

The simplest caching strategy appears in backend/services/config.py, where the get_settings function uses Python’s built-in @lru_cache decorator to persist API configuration in memory.

Because settings remain static during the application lifecycle, the decorator wraps get_settings() with maxsize=1, ensuring the first successful call loads and caches the configuration while subsequent invocations return the cached result instantaneously.


# backend/services/config.py

from functools import lru_cache
from .api_settings import load_api_settings

@lru_cache(maxsize=1)
def get_settings():
    """Load and cache the application settings on first call."""
    return load_api_settings()

This pattern eliminates redundant filesystem or network calls during request handling, reducing the latency of every endpoint that depends on dynamic configuration values.

Resilience Patterns in Network Operations

Domain-Fail Cache and Circuit Breaker

To protect against cascading failures when external domains become unresponsive, backend/services/network_utils.py maintains two complementary caches: _domain_fail_cache and _circuit_breaker. These dictionaries act as a lightweight circuit breaker and failover mechanism.

Before executing an HTTP request, the code checks if the target domain exists in _domain_fail_cache. If present, the request routes immediately to a curl fallback rather than attempting another doomed connection. Successful responses clear the domain from both caches, while failures insert entries with a five-minute TTL.


# backend/services/network_utils.py

_domain_fail_cache = {}
_circuit_breaker = {}

def fetch_with_curl(url):
    # Skip external request if the domain is in the fail cache

    domain = urllib.parse.urlparse(url).netloc
    if domain in _domain_fail_cache:
        return curl_fallback(url)

    # Normal request path …

    response = requests.get(url, timeout=5)

    # On error, record the failure with a TTL

    if response.status_code >= 500:
        _domain_fail_cache[domain] = time.time() + 300   # 5‑minute TTL

    else:
        _domain_fail_cache.pop(domain, None)  # clear on success

    return response

This strategy prevents the application from hammering distressed external services while maintaining availability through degraded-but-functional fallback behavior.

Thread-Safe Flight Data Caching

OpenSky Cache with Lock Protection

Flight data retrieval in backend/services/flights.py utilizes a thread-safe caching pattern to avoid redundant calls to the OpenSky API. The implementation combines a threading.Lock() with atomic timestamp-value pairs to ensure consistency across concurrent requests.

The module-level variables _cached_opensky_flights and _cached_opensky_ts store the data and its freshness timestamp, protected by _opensky_cache_lock. When a request arrives, the code acquires the lock and checks if the cached data is younger than the 300-second TTL. On a cache miss, it releases the lock only after updating both the data and timestamp atomically.


# backend/services/flights.py

_opensky_cache_lock = threading.Lock()
_cached_opensky_flights = None
_cached_opensky_ts = 0
_OPENSKY_TTL = 300  # seconds

def fetch_opensky_flights():
    with _opensky_cache_lock:
        now = time.time()
        if _cached_opensky_flights and (now - _cached_opensky_ts) < _OPENSKY_TTL:
            return _cached_opensky_flights   # cache hit

        # Cache miss – perform the network call

        fresh = _call_opensky_api()
        _cached_opensky_flights = fresh
        _cached_opensky_ts = now
        return fresh

Supplemental Data Sources

The same file implements an identical locking strategy for supplemental flight data providers using _supplemental_cache_lock. This parallel structure ensures that auxiliary data sources—used when OpenSky returns incomplete results—are similarly deduplicated and protected against race conditions.

Security and Cryptographic Caching

OpenClaw Nonce Store

The backend/services/openclaw_bridge.py module implements _openclaw_nonce_cache as a security mechanism rather than a performance optimization. This in-memory dictionary stores per-session nonces to prevent replay attacks against the OpenClaw API.

Before processing any request, the system checks if the payload’s nonce exists in the cache. A hit indicates a potential replay attack, triggering immediate rejection. Successful requests insert the nonce with a timestamp, maintaining a bounded set of seen values that clears between test runs.


# backend/services/openclaw_bridge.py

_openclaw_nonce_cache = {}

def send_openclaw_request(payload):
    nonce = payload["nonce"]
    if nonce in _openclaw_nonce_cache:
        raise ValueError("Replay attack detected")
    _openclaw_nonce_cache[nonce] = time.time()
    # …perform request…

Signed-Write Revocation TTL

In backend/services/mesh_signed_events.py, the revocation cache maintains a mapping of revoked signatures to their expiration timestamps. This TTL-based cache enables constant-time "is-revoked?" checks without scanning historical revocation lists. The cache refreshes only when new revocation entries arrive, keeping memory usage proportional to the active revocation window rather than the total historical set.

Operational and Frontend Caching

Telemetry Batch Cache

The telemetry service in backend/services/telemetry.py uses module-level variables _cached_telemetry and _cached_telemetry_ts to store the most recent processed batch. The get_cached_telemetry function checks a 60-second TTL before refreshing from the data source, reducing load on downstream analytics systems during high-frequency polling scenarios.


# backend/services/telemetry.py

_cached_telemetry = None
_cached_telemetry_ts = 0
_TELEMETRY_TTL = 60

def get_cached_telemetry():
    global _cached_telemetry, _cached_telemetry_ts
    if _cached_telemetry and (time.time() - _cached_telemetry_ts) < _TELEMETRY_TTL:
        return _cached_telemetry
    # otherwise refresh from the data source

    _cached_telemetry = _load_telemetry()
    _cached_telemetry_ts = time.time()
    return _cached_telemetry

WebAssembly Memory Optimization

On the frontend, frontend/src/mesh/privacyCoreWasm/privacy_core.js caches the Uint8Array view of the WebAssembly memory buffer in cachedUint8ArrayMemory0. This avoids repeated allocations during cryptographic operations, with the cache clearing automatically whenever the underlying WASM memory grows to accommodate larger datasets.

Summary

  • LRU Configuration Caching: The get_settings function in backend/services/config.py uses @lru_cache(maxsize=1) to eliminate redundant configuration loads.
  • Resilient Network Caching: backend/services/network_utils.py implements _domain_fail_cache and _circuit_breaker to provide automatic failover and prevent cascading failures.
  • Thread-Safe Flight Data: backend/services/flights.py protects OpenSky and supplemental data with threading.Lock() and atomic timestamp checks to ensure consistency under concurrent access.
  • Security Nonce Tracking: backend/services/openclaw_bridge.py prevents replay attacks through the _openclaw_nonce_cache dictionary.
  • Operational Efficiency: Telemetry and revocation data use module-level TTL caches to minimize computational overhead and external API calls.
  • Frontend Optimization: The WASM interface caches memory views to reduce allocation overhead during privacy-critical operations.

Frequently Asked Questions

Does Shadowbroker use Redis or Memcached for caching?

No. According to the BigBodyCobain/Shadowbroker source code, all caching strategies are process-local and in-memory. The architecture intentionally avoids external dependencies like Redis or Memcached because the application runs as a single-node containerized service, making distributed caching unnecessary and keeping the deployment footprint minimal.

How does Shadowbroker prevent race conditions when caching flight data?

Race conditions are prevented through explicit threading.Lock() objects. In backend/services/flights.py, the _opensky_cache_lock ensures that only one thread can check or update the _cached_opensky_flights variable at a time. This lock-based coordination guarantees that concurrent requests result in exactly one external API call during cache misses while allowing safe parallel reads during cache hits.

What is the purpose of the domain-fail cache in network_utils.py?

The _domain_fail_cache in backend/services/network_utils.py acts as a circuit breaker for unreliable external services. When a domain returns a 500-level error, it enters the cache with a five-minute TTL, causing subsequent requests to route through a curl fallback instead of the failing HTTP pathway. This protects both the Shadowbroker backend from hanging connections and the external service from excessive retry traffic during outages.

How does the OpenClaw nonce cache protect against replay attacks?

The _openclaw_nonce_cache in backend/services/openclaw_bridge.py stores nonces from successfully processed requests. Before executing any OpenClaw API call, the system verifies that the request nonce is not already present in the cache. If the nonce exists, the system rejects the request as a duplicate, ensuring that cryptographic signatures cannot be reused maliciously to replay previous valid operations.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →