Honua Server
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.v1surface 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
/mcpsurface 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:
- honua-console — web console (Studio, Catalog, Operate, Share) over the admin API; the admin/UI home
- honua-helm — Helm chart, the Kubernetes deploy path
- honua-sdk-js · honua-sdk-python · honua-sdk-dotnet — client SDKs generated from the same admin contract
- honua-mobile — .NET MAUI mobile SDK with GeoPackage/offline foundation
- geospatial-grpc — open gRPC protocol standard the server's
geospatial.v1surface implements - geospatial-mcp — open geospatial MCP standard behind
/mcp
Feedback
GitHub Issues are the primary feedback loop for the open-core MVP. Please use the forms so reports include enough detail for triage:
- Report a bug (include screenshots and repro steps)
- Request a feature — or upvote existing roadmap items
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.
No comments yet
Be the first to share your take.