A GIS configuration for Hermes
A GIS agent, configured.
Hermes for GIS is the documented setup behind Mercator, a working GIS agent on the open-source Hermes agent from Nous Research. Esri and open-data tools, a local PostGIS and QGIS stack, and a library of GIS skills you pull from GitHub into your own Hermes profile.
$ git clone github.com/daraobeirnecode/hermes-gis-skills
hermes agent · GIS toolset enabled · learning loop on
› which zoning district covers 1234 J Street?
<think> spatial lookup → query the zoning Feature Layer </think>
<tool_call>
{"name": "esri.query_features",
"arguments": {"layer": "Zoning/2",
"where": "intersects('1234 J Street')"}}
</tool_call>
← 1 feature · ZONE_CODE = C-3
1234 J Street is in Zoning District C-3 (Central Business
District). Mixed-use residential/commercial is permitted up
to 65 feet. Full district text at /docs/zoning/c-3.
› what open datasets cover that parcel?
<tool_call>
{"name": "open_data.search",
"arguments": {"bbox": "-121.50,38.57,-121.49,38.58",
"keywords": "parcels zoning land use"}}
</tool_call>
← 3 datasets · county open data portal
The parcel appears in 3 published open datasets: parcels,
zoning, and general plan land use, all from the county open
data portal.A configured Hermes profile
Mercator runs on Nous Research's open-source Hermes agent with 16 toolsets, MCP servers for Esri, Census, and open data, plus persistent memory and session search.
$ hermes tools
▸ terminal file browser web vision
skills memory session_search todo
delegation cronjob computer_useA real local GIS stack
The agent drives the tools you already run: PostGIS, QGIS, GDAL, DuckDB, Tippecanoe, and a Python geo environment with GeoPandas, Shapely, Rasterio, and pyproj.
postgis PostgreSQL 18.4 · PostGIS 3.6.3
qgis 4.0.3
gdal ogr2ogr · gdalinfo
duckdb spatial · tippecanoeSkills you pull from GitHub
A library of GIS skills, versioned as agentskills.io markdown. Clone the repo into your Hermes skills directory and the agent loads them on the next run.
$ git clone \
github.com/daraobeirnecode/hermes-gis-skills \
~/.hermes/skills/gis
added 21 GIS skillsWhat is configured
The GIS parts, wired into an agent that already ships.
An Esri and open-data toolset
The Esri MCP exposes portal search, layer inspection, feature queries, and geocoding. An open-data tool covers public portals such as ArcGIS Hub, Socrata, and data.gov. Census enrichment sits alongside them.
arcgis-rest-service-validator geospatial-data-qa-pipeline
arcgis-rest-to-product-app open-source-gis-stack-builder
esri-experience-builder spatial-ai-operations-console
feature-style-cookbook static-vector-tile-product-app
maplibre-from-stac ... and 12 moreGIS skills, pulled from GitHub
The library is 21 agentskills.io skills covering service validation, app scaffolds, cartography, QA pipelines, and spatial AI. They are plain markdown in your repo, cloned into the Hermes skills directory and versioned like any other code.
{
"name": "esri.query_features",
"arguments": {
"layer": "Zoning/2",
"where": "ZONING = 'C-3'",
"out_fields": ["APN", "ADDRESS", "HEIGHT_LIMIT"]
}
}Real function calling
Hermes emits <tool_call> JSON in a single turn, no parsing hacks. Each GIS tool declares a typed schema, so the agent calls query_features with the right arguments and gets structured features back.
SELECT p.apn, p.address, z.zone_code
FROM source.parcels p
JOIN source.zoning z
ON ST_Intersects(p.geom, z.geom)
WHERE z.zone_code = 'C-3'
LIMIT 500;PostGIS as the truth engine
A local gis_lab database holds the source, staging, analysis, app_public, and audit schemas. Read-only spatial SQL answers the hard questions; derived layers are written back under provenance columns.
$ claude --model opus --fallback-model sonnet
$ git push origin main
$ vercel deploy --prodBuild with Claude Code, ship to Vercel
The agent builds apps with Claude Code, verifies them with local commands and browser QA, then pushes to GitHub and deploys to Vercel. It checks its own output rather than trusting a self-report.
Built on your stack
Made for the way GIS teams already work.
The configuration does not ask you to migrate anything. The tools query the Feature Layers you already publish, respect your ArcGIS authentication, and read from the databases you already run. Yes, it works with your existing shapefiles.
from arcgis.gis import GIS
gis = GIS("home") # read-only, no plaintext secrets
item = gis.content.get("<item_id>")
layer = item.layers[0]
rows = layer.query(where="ZONING = 'C-3'",
out_fields="APN,ADDRESS,HEIGHT_LIMIT")
# returned to Hermes as structured tool outputThe stack behind it
- NOUS HERMES
- ESRI
- POSTGIS
- QGIS
- GDAL
- DUCKDB
- TIPPECANOE
Get started in 60 seconds
Install Hermes, pull the skills.
The skills repo is not published yet. Once it is, this pulls all 21 skills into your Hermes profile.