◆ SDK · CLI · REST · Source code

Build on it, don't just buy into it

Every solution in this portfolio is a developer product first. Import a single map control into an application you already ship, describe a whole map app in YAML, call the REST APIs from any language, or license the source and run the entire thing yourself.

📦 npm — tree-shakeable TS 🐍 Python CLI — YAML → static page 🔌 OpenAPI 3.1 + Swagger UI 📂 Source-code licensing
Integration paths

Four ways in, depending on how much you want to own

Mix them freely — most teams start with the library and add the REST layer later.

💻

TypeScript library

Tree-shakeable npm package with 40+ map controls and a headless client behind each one. Import one class or the whole surface, with full types.

🐍

Python CLI

Declare a full map application in YAML and build it into a portable static page — with the COOP/COEP headers DuckDB WASM requires already set.

🔌

REST APIs

OpenAPI 3.1 with Swagger UI and ReDoc, auto-generated record CRUD, realtime SSE, and standards-compliant Esri and OGC geospatial contracts.

📂

Source-code licence

The repository, not just the bundle. Self-host it, fork it, extend it on your own roadmap — with no dependency on our release schedule.

Surface area

What each solution exposes

Eight products, four developer surfaces, one licensing conversation.

SolutionLanguage / runtimeDeveloper surface
Land Intelligence — Zoning & CRE Analysis TypeScript, Python npm library (40+ controls, headless clients), YAML config schema, Python CLI with init, validate, build, serve and convert
Execution Layer Rust (TrailBase), TypeScript Auto-generated record CRUD per table, realtime SSE subscriptions, custom domain endpoints, JSON-schema form definitions
Parcel Federation Proxy Python (FastAPI) Esri FeatureServer contract, OGC API Features, unified search, admin registry API, OpenAPI 3.1 document for client generation
Opportunity Pipeline Python (DuckDB) YAML jurisdiction schema with validated config models, a staged CLI you can run whole or one stage at a time, canonical role and column catalog, and a manifest contract for the map client
Geospatial CMS In development TypeScript (Next.js, ArcGIS SDK) Versioned REST API under /api/v1 for auth, feature retrieval and spatial analysis; a serialisable workflow-graph format; Zod-validated boundaries; self-hosted via Docker Compose
County Tax Search Gateway TypeScript (Express, Playwright) OpenAPI 3.0 document with bundled Swagger UI that works offline, one result envelope across every outcome, a named error-code taxonomy, and a CLI with pipeline-friendly exit codes
Zoning Code Intelligence Python (FastAPI, DuckDB) OpenAPI 3.1 with the AI-dependent endpoints separated from the key-free text endpoints, answers returning their own source passages, a staged SQL extraction pipeline, and CSV / GeoJSON / PostGIS export
Geospatial AI Assistant Python (FastAPI), TypeScript Unified geospatial API across ESRI/OGC/WFS with CQL filter conversion, a natural-language SQL surface with generation and execution split apart, and an MCP server exposing 20+ tools plus a Python client
AI Analyst backend Python (FastAPI) Chat and session endpoints, natural-language to read-only SQL, ArcGIS FeatureServer query proxy, layer catalog
Code tour

Enough to see the shape of the thing

Full reference documentation ships with SDK access.

quick-start.ts
// npm install maplibre-arcgis maplibre-gl
import maplibregl from 'maplibre-gl';
import { ArcGISAuthManager, ArcGISLoginControl, EsriFeatureServiceControl } from 'maplibre-arcgis';
import 'maplibre-arcgis/style.css';

const map = new maplibregl.Map({
  container: 'map',
  style: 'https://basemaps.cartocdn.com/gl/positron-gl-style/style.json',
  center: [-98.5, 39.8],
  zoom: 4,
});

const auth = new ArcGISAuthManager({
  portalUrl: 'https://www.arcgis.com',
  authMethod: 'oauth2',
  clientId: 'YOUR_CLIENT_ID',
});

map.addControl(new ArcGISLoginControl({ auth }), 'top-right');

map.on('load', () => {
  map.addControl(new EsriFeatureServiceControl({
    id: 'parcels',
    url: 'https://services.arcgis.com/.../FeatureServer/0',
    auth,
  }));
});
Licensing

Three ways to take delivery

Pick the one that matches how much of the system you want to run yourself. All three include developer documentation and integration support.

☁️

Managed service

We run it. You get accounts, endpoints and an SLA, and the parcel registry stays current without your team maintaining it.

  • Fastest path to a working pilot
  • No infrastructure on your side
  • Registry and upstream maintenance included
🧩

SDK licence

Take the library, CLI and API clients into your own product. Your UI, your branding, your deployment — our engine underneath.

  • Tree-shakeable — ship only what you use
  • Full TypeScript types and reference docs
  • Versioned releases with upgrade notes
📂

Source-code licence

The repository itself — backend, frontend, migrations, deployment configuration. Run it in your own environment and extend it without waiting on us.

  • Docker Compose deployment included
  • Air-gapped and on-premises friendly
  • Your roadmap, your release schedule
Data privacy note. The DuckDB WASM processing layer runs entirely in the browser — file loading, filtering, spatial joins and measurement never send your data anywhere. That property survives every licensing model, including the hosted one.

* Third-party data sources — ATTOM, Regrid, ESRI GeoEnrichment, Google Maps, MapTiler and county tax portals — require their own credentials or licences and are billed by those providers, not by us. ArcGIS GeoEnrichment consumes ArcGIS credits at ESRI's published rates.

◆ Source-code SDK for every solution

Get the SDK and a technical walkthrough

Tell us what you are building and which parts you would want to own. We will scope the integration on the call rather than after it.