AAMOS Infrastructure Reusability Analysis for LandveX Enterprise Platform
Date: 2026-07-02
Analyst: OpenClaw Subagent
Scope: Identify reusable components across AAMOS ecosystem for LandveX Enterprise Platform
Executive Summary
The AAMOS ecosystem contains 5 major codebases with varying maturity levels:
- aamos-ledger (Node.js/Express) — Production-ready ledger engine
- aamos-ledger-rust (Rust/Axum) — Next-gen rewrite in progress
- iom (Python/FastAPI) — Infrastructure Object Model platform
- quixzoom-capture-pipeline (Node.js) — Data collection & AI pipeline
- ouroboros-frontend (React/Vite/TS) — Modern frontend framework
Key Finding: Strong architectural convergence around PostgreSQL + Redis + JWT auth + event-driven patterns. The Rust ledger rewrite and IOM platform represent the most mature, reusable foundations.
1. Auth/Identity Service
1.1 aamos-ledger (Node.js) — auth.mjs
| Aspect |
Detail |
| Current Usage |
JWT validation (RS256/HS256), RBAC (admin/accountant/viewer), tenant isolation, service-to-service tokens |
| Implementation |
Express middleware, role hierarchy, tenant matching, JWT claims validation |
| Reusability |
Medium — Well-structured but Node.js/Express-specific. Role hierarchy is hardcoded for finance. |
| Adaptation Cost |
Medium — Needs abstraction for LandveX roles (municipality, property_owner, infrastructure_owner, etc.). Tenant isolation logic is reusable. |
1.2 aamos-ledger-rust (Rust) — aamos-auth crate
| Aspect |
Detail |
| Current Usage |
JWT validation (HS256/RS256), HashSet-based roles, Axum middleware integration |
| Implementation |
JwtValidator struct, AuthUser with has_role/has_any_role, require_role! macro |
| Reusability |
High — Clean separation, generic enough for any role set. Axum middleware pattern is framework-agnostic within Rust ecosystem. |
| Adaptation Cost |
Low — Add LandveX-specific roles to Role enum. Macro-based middleware is easily extensible. |
1.3 IOM (Python/FastAPI) — auth.py
| Aspect |
Detail |
| Current Usage |
JWT with role-permission mapping (UserRole enum + Permission enum), AuthManager class |
| Implementation |
ROLE_PERMISSIONS dict maps roles to granular permissions. FastAPI dependency injection. |
| Reusability |
High — Most sophisticated permission model. Role→permission mapping is exactly what LandveX plugin architecture needs. |
| Adaptation Cost |
Low — Add LandveX roles/permissions. FastAPI dependencies are clean and reusable. |
1.4 quixzoom-capture-pipeline
| Aspect |
Detail |
| Current Usage |
Basic JWT (implied by server.js comments), no dedicated auth module found |
| Reusability |
Low — Not a reference implementation for auth. |
Auth Recommendation
Primary: IOM auth.py — most complete RBAC+permission model, directly aligns with LandveX plugin permission manifest requirements.
Secondary: aamos-ledger-rust aamos-auth — if Rust stack is chosen for performance-critical paths.
2. API Gateway
2.1 aamos-ledger (Node.js/Express)
| Aspect |
Detail |
| Current Usage |
Express app with helmet, cors, rate-limiting, auth middleware, tenant context |
| Implementation |
Middleware chain: helmet → cors → rateLimit → auth → tenant → routes |
| Reusability |
Medium — Express-specific. Middleware pattern is standard but not framework-agnostic. |
| Adaptation Cost |
Medium — Would need porting to chosen framework (Axum/FastAPI/Express). |
2.2 aamos-ledger-rust (Rust) — aamos-api crate
| Aspect |
Detail |
| Current Usage |
Axum router with Tower layers (CorsLayer, TraceLayer), state injection |
| Implementation |
AppState struct with pool/jwt/audit/hermes. routes::create_router() pattern. |
| Reusability |
High — Tower/Axum is the modern Rust standard. Layer-based middleware is composable and testable. |
| Adaptation Cost |
Low — Add LandveX-specific routes. State pattern easily extended with plugin manager. |
2.3 IOM (Python/FastAPI)
| Aspect |
Detail |
| Current Usage |
FastAPI with CORS, HTTPBearer auth, dependency injection, WebSocket support |
| Implementation |
FastAPI() app with middleware, Depends() for auth, ConnectionManager for WS |
| Reusability |
High — FastAPI's dependency injection is excellent for plugin architecture. Auto-generated OpenAPI docs. |
| Adaptation Cost |
Low — Plugin routes can be dynamically mounted. WebSocket manager reusable for real-time features. |
2.4 IOM — nginx
| Aspect |
Detail |
| Current Usage |
Reverse proxy, rate limiting (per endpoint), SSL termination, upstream to API |
| Implementation |
nginx.conf with limit_req_zone, upstream blocks, health checks |
| Reusability |
High — Generic, production-ready. Directly reusable for LandveX. |
| Adaptation Cost |
Low — Update upstream names and SSL certs. |
2.5 quixzoom-capture-pipeline
| Aspect |
Detail |
| Current Usage |
Express with helmet, cors, rate-limit, Redis-backed queue stats |
| Reusability |
Medium — Similar to aamos-ledger but less mature. WebSocket server is specialized for fleet intelligence. |
API Gateway Recommendation
Primary: IOM FastAPI + nginx — proven pattern, excellent plugin support via dynamic route mounting.
Alternative: aamos-ledger-rust Axum/Tower — if Rust is chosen for performance. Both are valid; FastAPI has faster development velocity.
3. Database Layer
3.1 aamos-ledger (Node.js) — pg + schema.sql
| Aspect |
Detail |
| Current Usage |
PostgreSQL with ledger_accounts, ledger_journal_entries, ledger_journal_lines, ledger_audit_log, ledger_periods |
| Implementation |
pg.Pool, parameterized queries, schema with constraints, indexes, sequences |
| Reusability |
High — Schema design is excellent: tenant isolation, audit trail, immutable journal entries, period management. |
| Adaptation Cost |
Low-Medium — Core tables reusable for LandveX billing (customers→organizations, contracts, invoices). Needs extension for plugin data. |
3.2 aamos-ledger-rust (Rust) — aamos-db + sqlx
| Aspect |
Detail |
| Current Usage |
PgPoolOptions, sqlx migrations, compile-time query checking |
| Implementation |
create_pool() with max_connections, acquire_timeout, idle_timeout. Migration runner. |
| Reusability |
High — sqlx provides type-safe queries. Migration system is standard. |
| Adaptation Cost |
Low — Pool configuration is generic. Migrations need LandveX-specific tables. |
3.3 IOM (Python) — asyncpg
| Aspect |
Detail |
| Current Usage |
DatabasePool with asyncpg, connection pooling, health checks, transactions |
| Implementation |
asyncpg.create_pool, @asynccontextmanager for acquire, fetch/fetchrow/execute methods |
| Reusability |
High — Clean abstraction. PostGIS support for geospatial data. |
| Adaptation Cost |
Low — Pool wrapper is generic. Add LandveX schema tables. |
3.4 quixzoom-capture-pipeline
| Aspect |
Detail |
| Current Usage |
PostgreSQL + PostGIS, Neo4j for knowledge graph, Redis for caching |
| Implementation |
Multi-database setup in docker-compose |
| Reusability |
Medium — PostGIS is relevant for LandveX (property locations, maps). Neo4j adds complexity. |
| Adaptation Cost |
Medium — Multi-database orchestration needed. Neo4j may be overkill initially. |
Database Recommendation
Primary: aamos-ledger schema + IOM asyncpg pool — combine the excellent ledger schema design with IOM's clean Python async wrapper.
For geospatial: Add PostGIS (from QuixZoom/IOM pattern) for property/GIS features.
4. Event Bus
4.1 aamos-ledger (Node.js) — hermes.mjs
| Aspect |
Detail |
| Current Usage |
Redis pub/sub primary, JSONL file fallback, event envelope with trace/correlation/tenant |
| Implementation |
emit() publishes to Redis + appends to JSONL. subscribe() for consumers. Lazy Redis connection. |
| Reusability |
High — Event envelope structure is well-designed (trace_id, correlation_id, tenant_id, decision_source). JSONL fallback is robust. |
| Adaptation Cost |
Low — Event types need LandveX namespacing (landvex.billing.invoice.created). Core logic reusable. |
4.2 aamos-ledger-rust (Rust) — aamos-hermes
| Aspect |
Detail |
| Current Usage |
HermesEvent struct, HermesClient trait, RedisHermes implementation |
| Implementation |
Async trait for emit, Redis PUBLISH with JSON serialization |
| Reusability |
High — Trait-based design allows multiple backends (Redis, Kafka, in-memory for testing). |
| Adaptation Cost |
Low — Implement trait for LandveX event types. Add consumer pattern if needed. |
4.3 IOM (Python) — event_bus.py
| Aspect |
Detail |
| Current Usage |
In-memory event bus with asyncio, subscriber registry, event history |
| Implementation |
EventBus class with subscribe/publish/get_events. Enum-based event types. |
| Reusability |
Medium — In-memory only, no persistence. Good for single-process, not distributed. |
| Adaptation Cost |
Medium — Needs Redis/RabbitMQ backend for production. Event type enum is reusable. |
4.4 quixzoom-capture-pipeline
| Aspect |
Detail |
| Current Usage |
Redis for queues (AI, taxonomy, dataset), implied event flow |
| Reusability |
Low-Medium — Queue-based, not event-bus patterned. Kafka mentioned in docker-compose but not in code. |
Event Bus Recommendation
Primary: aamos-ledger hermes.mjs — most production-ready with Redis + JSONL fallback. Event envelope structure directly supports audit and traceability requirements.
Alternative: aamos-ledger-rust aamos-hermes — if Rust stack chosen. Trait design is more extensible.
5. Frontend Framework
5.1 ouroboros-frontend (React/Vite/TS)
| Aspect |
Detail |
| Current Usage |
React 19 + Vite + TypeScript + Tailwind CSS + React Router |
| Implementation |
Modern SPA setup with AuthContext, API client, type definitions |
| Reusability |
High — Modern, standard stack. AuthContext pattern reusable. API client (fetchWithAuth) is generic. |
| Adaptation Cost |
Low — Replace mock auth with real JWT flow. Add LandveX-specific routes/views. Tailwind theming for LandveX brand. |
5.2 landvex-admin (HTML/CSS/JS)
| Aspect |
Detail |
| Current Usage |
Dark-themed admin dashboard, city grid UI, inline CSS/JS |
| Implementation |
Single HTML file with CSS custom properties, vanilla JS |
| Reusability |
Medium — UI components (cards, tabs, modals, toasts) are well-designed. But monolithic structure. |
| Adaptation Cost |
Medium — Extract components into reusable form. Dark theme aligns with LandveX brand. |
5.3 landvex-finance-sprint3 (Vanilla JS ES Modules)
| Aspect |
Detail |
| Current Usage |
Vanilla JS with ES modules, state management, lazy-loaded tabs |
| Implementation |
state.mjs (Redux-like), api.mjs (fetch wrapper), main.mjs (tab routing), period management |
| Reusability |
Medium — State management pattern is clean. But vanilla JS doesn't scale as well as React for complex UIs. |
| Adaptation Cost |
Medium — Could port state logic to React context. API layer is reusable. |
5.4 aamos-ledger UI (Vanilla JS)
| Aspect |
Detail |
| Current Usage |
API class, Router class, app shell with tabs |
| Implementation |
Simple class-based API client, hash-based router |
| Reusability |
Low-Medium — Basic patterns, but less sophisticated than sprint3 or React. |
Frontend Recommendation
Primary: ouroboros-frontend (React/Vite/TS) — modern, typed, component-based. Aligns with LandveX billing DESIGN.md which specifies React/Vue.
Component library: Extract reusable patterns from landvex-admin (dark theme, card layouts, form components) into React components.
Cross-Cutting Concerns
Tenant Isolation (ARC-003)
All mature codebases implement tenant isolation:
- aamos-ledger:
tenant_id in every table, RLS policies, middleware validation
- aamos-ledger-rust:
TenantId newtype, tenant in JWT claims
- IOM: Multi-tenant via
tenant_id (implied by auth patterns)
- ARC-003 standard: Formalizes RLS, Redis key-prefixing, event envelope tenant field
Reusability: Very High — ARC-003 is a platform standard. Implementation patterns are consistent across codebases.
Canonical Domain Model (ARC-001)
Twelve universal objects defined (Entity, Organization, Person, Asset, Location, Project, Task, Workflow, Document, Transaction, Event, Contract).
Reusability: Very High — LandveX billing's customers, contracts, invoices map directly to Organization, Contract, Document+Transaction.
Audit & Observability
- aamos-ledger:
ledger_audit_log (append-only), trace_id/correlation_id, decision_source
- aamos-ledger-rust:
AuditWriter crate
- IOM: Structured logging, Prometheus metrics, Grafana dashboards
- landvex-finance-sprint3:
metrics.mjs, logger.mjs, health.mjs
Reusability: High — Patterns are consistent. Prometheus metrics and structured logging directly reusable.
Summary Matrix
| Component |
Best Implementation |
Reusability |
Adaptation Cost |
Notes |
| Auth/Identity |
IOM auth.py |
High |
Low |
Role-permission model fits plugin architecture |
| API Gateway |
IOM FastAPI + nginx |
High |
Low |
Dynamic route mounting for plugins |
| Database Layer |
aamos-ledger schema + IOM asyncpg |
High |
Low-Medium |
Excellent schema design, clean Python wrapper |
| Event Bus |
aamos-ledger hermes.mjs |
High |
Low |
Redis+JSONL fallback, great envelope design |
| Frontend |
ouroboros-frontend (React/Vite/TS) |
High |
Low |
Modern stack, type-safe |
| Tenant Isolation |
ARC-003 standard |
Very High |
Low |
Formalized across all layers |
| Domain Model |
ARC-001 standard |
Very High |
Low |
12 canonical objects |
| Audit/Observability |
Combined from ledger + IOM |
High |
Low |
Prometheus, structured logs, health checks |
Recommended Architecture for LandveX Enterprise Platform
Based on this analysis, the optimal reuse strategy:
Risk Assessment
| Risk |
Mitigation |
| Multiple auth implementations (Node/Rust/Python) |
Standardize on IOM's role-permission model |
| Rust rewrite incomplete |
Keep Node.js ledger as fallback; don't block on Rust |
| Frontend fragmentation (3+ approaches) |
Commit to React/Vite; deprecate vanilla JS UIs |
| Database schema divergence |
Enforce ARC-001 canonical model |
| Event bus inconsistency |
Standardize on Hermes envelope format |
Analysis complete. All major components evaluated against 5 focus areas with reusability ratings and adaptation cost estimates.