Developer Tools

Build & Automate with
GeoServer SDKs & CLI

Ship geospatial features faster. Manage layers, styles, and infrastructure from your terminal or favorite programming language.

Command Line Interface

Powerful, scriptable, and secure. Manage your geospatial workspace entirely from the terminal.

bash
Copy $ brew tap geoserver/tools $ brew install geoserver-cli ==> Downloading geoserver-cli v2.4.1... ==> Installed geoserver-cli successfully. $ geoserver auth login --workspace production ✓ Authenticated. Token saved to ~/.geoserver/credentials

Core Commands

CommandDescription
geoserver authAuthentication, token management & workspace switching
geoserver layersCreate, sync, update, and delete map layers
geoserver stylesUpload SLD/SLD2 styles and apply them to layers
geoserver dataImport GeoJSON, Shapefiles, or connect to PostGIS/BigQuery
geoserver deployPromote configs across dev/staging/prod environments
geoserver healthCheck API latency, tile cache status, and node metrics

Language SDKs

Type-safe, async-ready, and fully documented. Integrate geospatial capabilities directly into your stack.

python
Copy # Installation $ pip install geoserver-sdk # Quick Start import geoserver as gs client = gs.Client(api_key="gs_live_...") layer = client.layers.create( name="city_boundaries", source="./data/boundaries.geojson", style="default_admin" ) print(f"Layer published: {layer.wms_url}")
.
javascript
Copy // Installation $ npm i @geoserver/sdk-js // Quick Start import { GeoServerClient } from "@geoserver/sdk-js"; const client = new GeoServerClient({ apiKey: "gs_live_..." }); const layer = await client.layers.create({ name: "sensor_readings", source: "./data/sensors.csv", crs: "EPSG:4326" }); console.log(`Ready: ${layer.wfs_url}`);
go
Copy // Installation $ go get github.com/geoserver/sdk-go/v2 import "github.com/geoserver/sdk-go/v2" client := gs.New("gs_live_...") layer, err := client.Layers.Create(ctx, &gs.LayerCreateRequest{ Name: "flood_zones", Source: "./data/risks.shp", }) if err != nil { panic(err) } fmt.Printf("Published: %s\\n", layer.WMSURL)
java
Copy // Maven Dependency <dependency> <groupId>com.geoserver</groupId> <artifactId>geoserver-sdk-java</artifactId> <version>2.4.1</version> </dependency> var client = new GeoServerClient("gs_live_..."); var layer = client.layers().create( LayerRequest.builder() .name("utility_grid") .source(Paths.get("./data/grid.gpkg")) .build() );

🐍 Python

Async support, GeoPandas integration, and comprehensive testing suite.

v2.4.1PyPIMIT

🌐 JavaScript

Isomorphic, works in Node & browsers. TypeScript definitions included.

v2.4.0npmISC

🐹 Go

Concurrency-optimized, zero-allocation parsers, production-ready.

v2.3.8Go ModulesBSD

☕ Java

Reactive streams, Spring Boot starter, and Netty-based HTTP client.

v2.4.2MavenApache 2.0

5-Minute Quick Start

Get from zero to a published map layer in under five minutes.

Install & Authenticate

Grab the CLI via package manager and log in with your API token from the dashboard.

Upload Spatial Data

Drop your GeoJSON, Shapefile, or PostGIS connection string into the ingestion pipeline.

Style & Publish

Apply an SLD style or use auto-styling. Deploy to your workspace instantly.

Integrate & Scale

Use the SDK in your app to query, stream, or visualize the layer via WMS/WFS endpoints.

Read Full Guide