INTENT Logo
Spaxiom Technical Series — Part 19

Future Work, Open Research Questions, and Conclusion

Research directions, developer tooling, and the vision for a lingua franca of sensor experience

Joe Scanlin

November 2025

About This Section

This final section explores open research questions in information-theoretic compression, verifiable compilation, and frontier model integration. It also details the comprehensive developer tooling ecosystem needed to make Spaxiom accessible to practitioners.

We conclude by positioning Spaxiom as the foundation for a new kind of AI substrate: a lingua franca for sensor experience that bridges the physical world and the agents that will increasingly inhabit it.

14. Future Work and Open Research Questions

14.1 Information-theoretic compression of experience

Spaxiom currently relies on hand-designed event schemas. Open questions:

Potential direction: treat Spaxiom events as a learned discrete bottleneck, analogous to VQ-VAE codes but for sensor experiences.

14.2 Safe and verifiable compilation

We sketched how safety envelopes could be compiled to automata. Future work:

14.3 Interfacing with frontier models

On the model side:

We expect an ecosystem of Spaxiom-aware agent frameworks, where the DSL is the default way to "speak sensor."

14.4 Benchmarks

To move beyond thought experiments, we plan to define benchmarks across several dimensions:

  1. Token Savings:
    • Compare total tokens per decision for baselines vs Spaxiom in multiple environments.
  2. Energy per Decision:
    • Combine tokens and measured Joules/token from recent LLM energy studies to quantify actual energy savings.
  3. Control Performance:
    • Compare RL/agent policies using raw streams vs Spaxiom events on tasks such as HVAC, queue management, and safety.
  4. Explainability & Forensics:
    • Measure human investigators' ability to reconstruct incidents with vs without Spaxiom event logs.

14.5 Developer Experience and Tooling

Adoption of any new framework depends critically on developer experience (DX). Even with powerful abstractions, developers need practical tools to build, test, debug, and deploy Spaxiom applications efficiently. This section outlines the tooling ecosystem required to make Spaxiom accessible to practitioners.

IDE integration and language support

Modern developers expect first-class IDE support. Spaxiom provides:

VSCode extension
# VSCode shows inline type hints and errors
from spaxiom import Sensor, Zone, Condition
from spaxiom.units import meters, celsius

zone = Zone(x=0, y=0, width=10 * meters, height=5 * meters)
temp = Sensor(name="temp", unit=celsius)

# Error: incompatible units (meters vs celsius)
# VSCode underlines in red: "Cannot compare Temperature with Distance"
too_hot = Condition(lambda: temp.read() > 10 * meters)  # Type error!
Jupyter notebook support

For exploratory development and data science workflows:

# In Jupyter notebook
from spaxiom.viz import plot_zones, plot_event_timeline

# Visualize spatial layout
plot_zones([loading_zone, staging_zone, storage_zone])

# Plot event timeline
events = store.query(since="2025-01-01", limit=1000)
plot_event_timeline(events, group_by="zone")

Command-line interface (CLI)

The spaxiom CLI provides project scaffolding, testing, and deployment:

Project initialization
# Create new Spaxiom project
$ spaxiom init warehouse-monitor
Created warehouse-monitor/
  ├── spaxiom.yaml        # Configuration
  ├── sensors.py          # Sensor definitions
  ├── patterns.py         # INTENT patterns
  ├── main.py             # Runtime entry point
  └── tests/              # Unit tests

# Install dependencies
$ cd warehouse-monitor
$ spaxiom install
Testing and validation
# Run unit tests (simulated sensors)
$ spaxiom test
Running 12 tests...
✓ test_occupancy_threshold (0.2s)
✓ test_queue_formation (0.5s)
✓ test_overheating_alert (0.1s)
...
12 passed, 0 failed

# Validate configuration
$ spaxiom validate
✓ All sensors defined
✓ All zones have valid coordinates
✓ No circular pattern dependencies
✓ Type checking passed

# Check coverage (which sensors/patterns are tested)
$ spaxiom test --coverage
Sensor coverage: 18/20 (90%)
Pattern coverage: 8/10 (80%)
Condition coverage: 15/20 (75%)
Deployment and monitoring
# Deploy to edge device
$ spaxiom deploy --target pi@192.168.1.100
Uploading code... ✓
Installing dependencies... ✓
Starting runtime... ✓
Runtime listening on http://192.168.1.100:8080

# View logs
$ spaxiom logs --follow
[2025-01-06 10:23:45] INFO: Runtime started (tick_rate=10Hz)
[2025-01-06 10:23:46] INFO: Sensors online: 20/20
[2025-01-06 10:23:47] EVENT: OccupancyChanged(zone=loading, count=5)
[2025-01-06 10:23:50] ALERT: QueueFormed(zone=loading, length=8)

# Check runtime health
$ spaxiom status
Runtime: HEALTHY
Uptime: 3d 14h 22m
Sensors: 20/20 online
Events/sec: 12.3
Latency p99: 8.2ms

Testing framework

Spaxiom includes a pytest-based testing framework with specialized fixtures:

Unit tests for patterns
# tests/test_queue_pattern.py
from spaxiom.testing import MockRuntime, MockSensor, advance_time

def test_queue_formation():
    # Create mock runtime with simulated sensors
    runtime = MockRuntime()
    camera = MockSensor(name="camera", initial_value=0)
    runtime.add_sensor(camera)

    # Create pattern
    from patterns import QueuePattern
    queue = QueuePattern(camera=camera, threshold=5)
    runtime.add_pattern(queue)

    # Simulate sensor readings
    camera.set_value(3)  # Below threshold
    runtime.tick()
    assert not queue.is_active()

    camera.set_value(7)  # Above threshold
    runtime.tick()
    assert queue.is_active()

    # Simulate time passage
    advance_time(runtime, seconds=10)
    assert queue.duration() == 10.0
Integration tests with simulated environments
# tests/test_warehouse_scenario.py
from spaxiom.testing import SimulatedEnvironment

def test_warehouse_workflow():
    # Create simulated warehouse with 4 zones
    env = SimulatedEnvironment.from_config("warehouse.yaml")

    # Simulate 1 hour of activity
    events = []
    for t in range(3600):
        env.step()  # Advance 1 second
        events.extend(env.get_events())

    # Assert expected event sequence
    assert any(e["type"] == "TruckArrived" for e in events)
    assert any(e["type"] == "LoadingStarted" for e in events)
    assert any(e["type"] == "LoadingCompleted" for e in events)

    # Check performance metrics
    avg_loading_time = env.get_metric("avg_loading_time")
    assert avg_loading_time < 600.0  # Under 10 minutes

Debugging and visualization tools

Interactive timeline debugger

Web-based UI for stepping through event sequences:

# Start debugger with recorded events
$ spaxiom debug /var/lib/spaxiom/events.db
Opening debugger at http://localhost:3000

# Debugger UI shows:
# - Timeline slider (scrub through time)
# - Event list (filter by type, zone, priority)
# - Sensor values at each timestamp
# - Pattern state visualization
# - Condition evaluation traces
Spatial visualizer

3D visualization of zones, entities, and sensor coverage:

from spaxiom.viz import SpatialVisualizer

viz = SpatialVisualizer(runtime)

# Render 3D scene (Three.js / Unity)
viz.show_zones(wireframe=True)
viz.show_entities(trail_length=30)  # Show movement trails
viz.show_sensor_coverage(camera_sensors, fov=90)

# Animate event timeline
viz.playback(events, speed=10.0)  # 10x real-time
Breakpoint-on-event debugging

Set breakpoints triggered by specific events:

from spaxiom.debug import breakpoint_on_event

# Pause execution when queue forms
@breakpoint_on_event("QueueFormed")
def inspect_queue(event):
    print(f"Queue in {event['zone']}: length={event['length']}")
    # Drop into interactive debugger
    import pdb; pdb.set_trace()

runtime.run()

Performance profiling and optimization

Built-in profiler
from spaxiom.profiling import RuntimeProfiler

profiler = RuntimeProfiler(runtime)
profiler.start()

runtime.run(duration=300)  # Profile 5 minutes

report = profiler.report()
print(report.summary())
# Output:
# ========== Spaxiom Runtime Profile ==========
# Total ticks: 3000 (10.0 Hz)
#
# Top 5 patterns by latency:
#   1. QueueFlow: 4.2ms avg, 8.9ms p99
#   2. OccupancyField: 2.1ms avg, 5.3ms p99
#   3. ADLTracker: 1.8ms avg, 3.2ms p99
#
# Top 3 callbacks by duration:
#   1. on_queue_formed: 12.3ms avg
#   2. on_overheating: 0.8ms avg
#
# Sensor read latency:
#   camera_loading: 3.2ms avg
#   modbus_temp_1: 0.5ms avg
Memory leak detection
$ spaxiom profile memory --duration 3600
Monitoring memory usage for 1 hour...

Memory growth detected:
  Pattern: OccupancyField (zone=loading)
  Growth rate: +2.3 MB/hour
  Likely cause: Unbounded history buffer

Recommendation: Add max_history_size parameter
Flame graphs for hot-path analysis
$ spaxiom profile flamegraph --output profile.svg
Generated flamegraph: profile.svg
Open in browser to see call stack visualization

Simulation and testing environments

Synthetic sensor generation
from spaxiom.sim import SyntheticSensor, GaussianNoise, PeriodicSignal

# Temperature with diurnal cycle + noise
temp = SyntheticSensor(
    name="temp",
    base_signal=PeriodicSignal(
        amplitude=5.0,  # ±5°C
        period=86400.0,  # 24 hours
        offset=20.0      # 20°C baseline
    ),
    noise=GaussianNoise(std=0.5)
)

# Occupancy with Poisson arrivals
occupancy = SyntheticSensor(
    name="occupancy",
    generator=lambda t: np.random.poisson(lam=10.0)  # 10 people avg
)

runtime.add_sensor(temp)
runtime.add_sensor(occupancy)
Scenario recording and playback
from spaxiom.sim import ScenarioRecorder, ScenarioPlayer

# Record a scenario from production
recorder = ScenarioRecorder(runtime)
runtime.run(duration=3600)  # Record 1 hour
recorder.save("scenarios/normal_ops.spx")

# Later: replay for regression testing
player = ScenarioPlayer.load("scenarios/normal_ops.spx")
test_runtime = SpaxiomRuntime()
player.attach(test_runtime)

# Run at 100x speed
test_runtime.run(speed=100.0)

# Assert no regressions
assert test_runtime.event_count("SafetyViolation") == 0

Monitoring and observability

Prometheus metrics export
from spaxiom.monitoring import PrometheusExporter

exporter = PrometheusExporter(runtime, port=9090)
exporter.start()

# Metrics exposed:
# spaxiom_events_total{type="DoorOpened",zone="loading"}
# spaxiom_pattern_latency_seconds{pattern="QueueFlow"}
# spaxiom_sensor_read_errors_total{sensor="camera_1"}
# spaxiom_runtime_tick_rate_hz
Grafana dashboards

Pre-built Grafana dashboards for common metrics:

# Import dashboard templates
$ spaxiom grafana import --dashboard runtime-overview
$ spaxiom grafana import --dashboard sensor-health
$ spaxiom grafana import --dashboard event-timeline

# Dashboards show:
# - Event rate over time (by type, zone, priority)
# - Pattern latency heatmaps
# - Sensor health status
# - Callback execution times
# - Memory and CPU usage
Distributed tracing (OpenTelemetry)
from spaxiom.tracing import OpenTelemetryTracer

tracer = OpenTelemetryTracer(
    endpoint="http://jaeger:4318",
    service_name="warehouse-runtime"
)
runtime.set_tracer(tracer)

# Traces show:
# - Sensor read → Pattern update → Condition eval → Callback dispatch
# - Cross-site event propagation (edge → cloud)
# - ML model inference triggered by events

Documentation and code generation

Auto-generated API documentation
# Generate docs from code
$ spaxiom docs generate --output docs/
Generating documentation...
  ✓ API reference (200 endpoints)
  ✓ Pattern library (25 patterns)
  ✓ Type definitions (50 types)
  ✓ Examples (30 snippets)

Docs available at docs/index.html
Schema-to-code generator

Generate Python pattern classes from declarative YAML schemas:

# patterns/custom.yaml
- name: CustomOccupancy
  sensors:
    - camera: Camera
    - floor: PressureMat
  parameters:
    - threshold: int
  events:
    - name: ZoneOccupied
      fields:
        - count: int
        - timestamp: datetime
$ spaxiom generate patterns patterns/custom.yaml --output patterns/generated.py
Generated patterns/generated.py with 1 pattern class

# Now import and use
from patterns.generated import CustomOccupancy
OpenAPI spec for REST APIs
$ spaxiom api spec --output openapi.yaml
Generated OpenAPI 3.0 spec with:
  - GET /events
  - GET /sensors/{id}
  - POST /patterns
  - GET /zones

# Use with code generators
$ openapi-generator-cli generate -i openapi.yaml -g python -o clients/python

Package management and distribution

Python package (PyPI)
# Install from PyPI
$ pip install spaxiom

# With optional dependencies
$ pip install spaxiom[vision]     # Camera/video support
$ pip install spaxiom[industrial] # Modbus, OPC UA, BACnet
$ pip install spaxiom[cloud]      # AWS, Azure, GCP connectors
$ pip install spaxiom[ml]         # ML integration (Feast, Tecton)
$ pip install spaxiom[all]        # Everything
Docker images
# Official images on Docker Hub
$ docker pull spaxiom/runtime:latest
$ docker pull spaxiom/runtime:edge    # Minimal for Raspberry Pi
$ docker pull spaxiom/runtime:cloud   # With cloud connectors

# Run containerized runtime
$ docker run -p 8080:8080 \
  -v /var/lib/spaxiom:/data \
  spaxiom/runtime:latest
Kubernetes Helm charts
# Add Helm repo
$ helm repo add spaxiom https://charts.spaxiom.io

# Install runtime on Kubernetes
$ helm install warehouse-runtime spaxiom/runtime \
  --set config.tickRate=10 \
  --set config.sensors[0].name=camera_1 \
  --set config.sensors[0].type=rtsp

# Supports horizontal scaling
$ kubectl scale deployment warehouse-runtime --replicas=10

Interactive tutorials and examples

Web-based interactive playground

Browser-based editor with live preview (like Rust Playground):

# Visit https://playground.spaxiom.io
# Features:
# - Code editor with syntax highlighting
# - Simulated sensors (drag-and-drop spatial layout)
# - Real-time event visualization
# - Share links to examples
# - Fork and modify templates
Example gallery
$ spaxiom examples list
Available examples:
  1. hello-world         Simple occupancy detection
  2. warehouse-queue     Queue flow monitoring
  3. hvac-optimization   Energy-aware HVAC control
  4. robot-safety        Collision avoidance with safety zones
  5. retail-analytics    Customer journey tracking
  ...

$ spaxiom examples run hello-world
Running example: hello-world
Press Ctrl+C to stop

[Output shows simulated events in real-time]

Community and ecosystem

Pattern marketplace

Community repository of reusable patterns:

# Search for patterns
$ spaxiom marketplace search "queue"
Found 5 patterns:
  - advanced-queue-flow (★ 245)
  - multi-stage-queue (★ 89)
  - priority-queue-manager (★ 67)

# Install pattern
$ spaxiom marketplace install advanced-queue-flow
Installed advanced-queue-flow v2.1.0

# Now use in code
from spaxiom.marketplace import AdvancedQueueFlow
Plugin system
# Create custom plugin
from spaxiom.plugins import Plugin

class CustomVisualizerPlugin(Plugin):
    def on_event(self, event):
        # Custom visualization logic
        self.render(event)

# Register plugin
runtime.register_plugin(CustomVisualizerPlugin())

# Discover community plugins
$ spaxiom plugins search "visualization"
$ spaxiom plugins install spaxiom-3d-viz

Summary: comprehensive developer tooling

Spaxiom's developer experience is designed to support the full development lifecycle:

By investing in world-class tooling, Spaxiom aims to reduce the barrier to entry for developers building spatiotemporal applications, accelerating adoption across industries from manufacturing to healthcare to smart cities.

15. Conclusion

As sensors proliferate and AI shifts into the Era of Experience, we need programming tools that treat space, time, and interaction as first-class design constraints. Spaxiom proposes:

In the same way SQL became the lingua franca for structured business data, and modern deep learning frameworks became a lingua franca for neural computation, Spaxiom aims to become a lingua franca for sensor experience: a bridge between the physical world and the agents that will increasingly inhabit it.

If we succeed, future frontier models will not just read the internet; they will read the world through a concise, structured, and safe language that lets them understand, remember, and act on the experiences of billions of devices and the humans they serve.