Honua Server

CI CodeQL Security Nightly License .NET PostGIS Docker

Cloud-native geospatial server. One container exposes the same PostGIS-backed data through every major GIS protocol — GeoServices REST (FeatureServer, MapServer, ImageServer, Geometry, GPServer), OGC API (Features, Maps, Tiles, Coverages, Processes), classic OGC WMS/WFS/WMTS/WCS, STAC, OData v4, vector tiles (MVT/TileJSON), Terrain-RGB and elevation APIs, 3D Tiles, MCP for AI agents, and gRPC. ArcGIS Pro and Esri SDK clients connect unmodified; QGIS, MapLibre, Excel, and Power BI hit the same layers — no ETL, no duplication, no GDAL toolchain to install.

Status

Honua Server is open core under the Elastic License 2.0, heading to a v1.0 GA. The GA-tier core (protocol surfaces, editing, imports, auth, operations) is tracked on the public roadmap — upvote what you want next. The server runs in Community mode with no license file; paid Pro/Enterprise features activate only via signed entitlements (see Editions and licensing).

Quick start

Docker Compose (requires Docker with Compose v2):

git clone https://github.com/honua-io/honua-server.git && cd honua-server
docker compose up -d
curl http://localhost:8080/healthz/ready

PostGIS, Redis, and Honua Server start automatically; migrations run on first boot. HTTP/1 REST and gRPC-Web are at http://localhost:8080, native h2c gRPC at http://localhost:8081. Continue with the quickstart to import a dataset and see it on a map, or add the web Console with docker compose --profile console up -d (set HONUA_CONSOLE_IMAGE to a published honua-console image; Operate serves at http://localhost:5174/operate).

Pre-built image (bring your own PostGIS):

docker run -p 8080:8080 -p 8081:8081 \
  -e ConnectionStrings__DefaultConnection="Host=host.docker.internal;Database=honua;Username=postgres;Password=postgres" \
  -e HONUA_ADMIN_PASSWORD="change-me" \
  honuaio/honua-server:latest

Kubernetes — deploy with the Helm chart in honua-helm; see the Kubernetes guide.

Local development — .NET Aspire with a dashboard for traces, logs, and metrics:

dotnet run --project src/Honua.AppHost

To run geoprocessing jobs locally (in-process, no cloud), use the local GP dev quickstart. For self-hosted pilots, run the pilot onboarding runbook before handing a deployment to another team.

Protocols

Every published layer is reachable through every protocol its service enables. The canonical matrix with examples lives in Protocols.

Protocol Endpoint Typical clients
GeoServices FeatureServer /rest/services/{id}/FeatureServer ArcGIS Pro, Esri SDKs, Esri Leaflet
GeoServices MapServer /rest/services/{id}/MapServer ArcGIS Pro, Esri map clients
GeoServices ImageServer /rest/services/{id}/ImageServer ArcGIS raster workflows
GeoServices Geometry Service /rest/services/Utilities/Geometry/GeometryServer Esri SDKs (buffer, project, intersect, …)
GeoServices GPServer /rest/services/{id}/GPServer ArcGIS Pro, async geoprocessing clients
Portal token issuance /sharing/rest/generateToken Esri clients using username/password tokens
OGC API Features /ogc/features QGIS, GDAL, OpenLayers, any OGC client
OGC API Maps /ogc/maps OGC map clients
OGC API Tiles /ogc/tiles QGIS, MapLibre
OGC API Coverages /ogc/coverages Science and raster tooling
OGC API Processes /ogc/processes OGC processing clients
WMS 1.3 / 1.1.1 /ogc/services/{id}/wms, /rest/services/{id}/MapServer/WMS QGIS, legacy OGC clients
WFS 2.0 / 1.1.0 / 1.0.0 /wfs QGIS, GDAL/OGR, legacy stacks
WCS 2.0.1 /ogc/services/{id}/wcs, /rest/services/{id}/ImageServer/WCS Science, elevation, coverage clients
WMTS 1.0 /ogc/services/{id}/wmts, /rest/services/{id}/MapServer/WMTS QGIS, legacy tile clients
OData v4 /odata Excel, Power BI, Tableau, SAP
STAC API /stac STAC browsers, catalog/search tooling
Vector tiles (MVT) + TileJSON /tiles/{layerId}/{z}/{x}/{y}.mvt, /tiles/{layerId}/tile.json MapLibre, OpenLayers, Leaflet
Terrain-RGB + elevation API /terrain/{datasetId}/…, /elevation/{datasetId}/… MapLibre raster-dem, field apps
3D Tiles scenes /scenes/{sceneId}/tileset.json CesiumJS, 3D Tiles clients
PMTiles /api/v1/tiles/pmtiles/{artifactId} MapLibre, serverless/CDN tile hosting
MCP (JSON-RPC) /mcp AI agents, operator automation, MCP clients
gRPC (geospatial.v1) port 8081 (h2c), gRPC-Web on 8080 Honua SDKs, mobile, services

Plus operational surfaces: health probes (/healthz/live, /healthz/ready), OpenAPI documents per OGC API, an interactive API explorer at /docs (dev mode or HONUA_SERVE_API_DOCS=true), the admin API (/api/v1/admin), and a capability manifest (/api/v1/capabilities/manifest) for clients to discover what a deployment supports.

Compliance

  • OGC CITE: 952 / 952 passing across 11 conformance suites (OGC API Features 1.0, OGC API Tiles 1.0, GeoPackage 1.2, GML 3.2, KML 2.2, WFS 1.0/1.1/2.0, WCS 2.0, WMS 1.3, WMTS 1.0) on trunk — see docs/cite-status.md for the authoritative snapshot and OGC conformance evidence for suite-by-suite evidence.
  • Client compatibility: the supported client x protocol matrix is the compatibility contract; Esri-side parity is tracked in GeoServices parity.
  • gRPC stability: versioning, deprecation, and stability guarantees for the geospatial.v1 surface are defined in the gRPC reference.
  • Control plane stability: admin/control-plane API versioning is governed by versioning and support.

Key capabilities

  • Query and edit — FeatureServer query/applyEdits/attachments/related records, OGC API Features CRUD with CQL2, WFS 2.0 transactions, OData CRUD with spatial functions (geo.distance, geo.intersects, $batch). Output as JSON, GeoJSON, PBF, FlatGeobuf, GeoParquet, and GeoArrow.
  • Esri migration and coexistence — ArcGIS Pro and Esri SDK clients connect unmodified. Import public ArcGIS REST services into PostGIS; scan ArcGIS Server and GeoServer for deterministic migration inventories. See Migrate from ArcGIS Server and from GeoServer.
  • No GDAL dependency — import GeoJSON, Shapefile (zip), GeoPackage, GPX, KML, WKT, FlatGeobuf, File Geodatabase (.gdb.zip), and GeoParquet directly, with CRS auto-detection and PostGIS reprojection.
  • Rendering and rasters — MapServer export/identify/legend, OGC API Maps, ImageServer, WCS, OGC API Coverages, cloud-optimized GeoTIFFs registered in place from S3/Azure, and server-generated Terrain-RGB elevation tiles.
  • Geoprocessing and workflows — one canonical async job runtime behind GPServer, OGC API Processes, gRPC, and MCP; declarative multi-step DAG workflows with retries and cron scheduling (Redis required for durable jobs).
  • AI-operable — the /mcp surface implements the open geospatial-mcp standard so agents can validate plans, dry-run, execute, and read results with the same authorization as any other client. See Connect AI agents.
  • Cloud-native operations — container-first and stateless; multi-layer caching (output cache, Redis, in-memory fallback); OpenTelemetry traces and metrics; API-key, OIDC, and optional mTLS auth; a server-computed operate loop for humans, Console, and agents (Operating Honua).

The admin API (/api/v1/admin) manages connections, services, layers, styles, and import jobs; the web admin UI lives in honua-console. The admin API is also the substrate for Honua's managed control-plane direction — change management and instance lifecycle workflows build on it rather than on a third-party GitOps controller.

Data providers

PostGIS is the primary read/write backend. Additional providers serve data in place, read/query-only, through the same protocol surfaces:

Provider Access
PostGIS Full read/write (default)
DuckDB Read-only, embedded — analytics and reference layers, no external database
SQL Server Read/query-only (geometry/geography tables)
Oracle Read/query-only (standard SDO_GEOMETRY)
MySQL / MariaDB Read/query-only (MySQL 8.0.11+, MariaDB 10.6+)
Amazon Redshift Read/query-only (native Redshift spatial)
Snowflake Read/query-only (GEOGRAPHY/GEOMETRY)
Databricks Read/query-only (SQL Warehouse, best-effort)

Per-provider capabilities, selection variables, and limitations are in the data sources reference.

Configuration

All settings are environment variables. Copy .env.example for a full annotated reference, or see the environment variable reference.

Required (PostgreSQL provider — default):

ConnectionStrings__DefaultConnection="Host=postgres;Database=honua;Username=postgres;Password=postgres"
HONUA_ADMIN_PASSWORD="change-me"

Common options:

ConnectionStrings__Redis="localhost:6379"   # shared caches; required for durable jobs/workflows
HONUA_OBSERVABILITY=true                    # metrics and health endpoints
HONUA_OPENTELEMETRY=true                    # distributed tracing
Cors__AllowedOrigins__0="https://app.example.com"

Production tuning — bounded database admission is the default production posture: keep Limits__Connections__MaxConcurrentQueries aligned with the pool size and size from the shared database budget across replicas (small 4-vCPU nodes profile best in the 4–6 active-query range; larger pools can overfeed PostGIS and worsen tail latency). Adaptive admission (AdaptiveConcurrencyEnabled) is an explicit tuning profile, not the default — monitor /monitoring/metrics/connection-pool and keep fixed-cap results as the baseline. Full guidance: Scale and tune performance and admission and pooling variables.

Invalid configuration fails startup with a detailed error message.

Documentation

Full hosted documentation: honua.gitbook.io/honuaio. The in-repo table of contents is docs/README.md. Frequent destinations:

I want to… Go to
Import a dataset and see a map in 10 minutes Quickstart
Deploy to production Docker Compose · Kubernetes · Cloud deployments
Operate, monitor, back up, scale Operating Honua · Monitoring
Connect a client ArcGIS Pro · QGIS · Excel/Power BI · MapLibre · AI agents (MCP)
Migrate from Esri or GeoServer From ArcGIS Server · From GeoServer · ArcGIS apps and SDKs
Understand the architecture Architecture · Protocols · Data model
Use the admin API Control plane API
Check client compatibility Compatibility contract
Contribute code Contributing · AGENTS.md

Related repositories

Honua is a family of repos around this server — the full map is in Ecosystem:

Feedback

GitHub Issues are the primary feedback loop for the open-core MVP. Please use the forms so reports include enough detail for triage:

Security

See SECURITY.md for supported versions and how to report vulnerabilities ([email protected]).

License

Elastic License 2.0 (ELv2) — free to use, deploy, and modify.