Last Larch · ARIA

Operations Manual

A step-by-step guide to setting up and using ARIA — from downloading the file to generating your first sector-specific CAP alert descriptions.

Getting started · 1

Download & open ARIA

ARIA is a single HTML file. There is nothing to install. It runs entirely in your web browser.

1
Download the file

Go to lastlarch.com/aria and click Download tool →. Save the file — it will be called ARIA.html.

Save it somewhere you'll find it again — your Desktop or a dedicated folder like Tools/ARIA/ works well.
2
Open it in your browser

Double-click ARIA.html. It will open in your default web browser. Chrome, Edge, Firefox, and Safari all work. No internet connection is required once it's open — unless you're querying online data sources or using an AI API.

3
That's it

You'll see a dark-themed map on the right and a sidebar on the left. A sample dataset (European city points) is pre-loaded so you can test the tool immediately.

If your browser shows a security warning about opening local files, click Allow or Open anyway. ARIA is safe — it contains no server connections of its own.

Getting started · 2

How ARIA works

ARIA is a three-step wizard. Each step builds on the last.

Step 1 — Query impact area

Load your GIS data sources, then draw or paste a polygon representing the hazard footprint. ARIA queries every active source and shows you what's inside — schools, health facilities, roads, whatever your data contains.

Step 2 — Review & configure

Choose which layers to include, set the hazard type and severity, and connect your ARIA-Lex library and AI model. This is where ARIA grounds the output in validated language before the AI adds local specifics.

Step 3 — Alert descriptions

ARIA produces sector-specific <headline> and <description> blocks ready to paste into your CAP editor. Each block is tagged to show whether it came from your library or was generated fresh.

Moving between steps

Every step has a ← Back button so you can return and adjust at any time — change your polygon, add a source, or tweak the hazard settings without losing your work. The step indicators at the top show where you are and which steps are complete.

Step 1 — Data sources · 3

Load a locally saved file

Use this for GeoJSON files or shapefiles stored on your computer. Your data never leaves your machine.

1
Drag and drop

The easiest way. Drag a .geojson, .json, or .zip (shapefile) file from your file explorer and drop it anywhere on the ARIA window. It loads instantly and appears in the sources list.

2
Or use the Add source form

Click + Add source in the sidebar. Enter a name, select Shapefile (.zip) from the type dropdown, click File, and browse to your file. Click Add source.

3
The source appears in the list

A toggle switch shows it's active. The badge shows the format. If you've already drawn a polygon, the query runs automatically.

Prefer GeoJSON over shapefiles where you have the choice — it loads faster and handles special characters in place names better.

Step 1 — Data sources · 4

Connect an ArcGIS layer

ARIA can query ArcGIS Online FeatureServer layers directly. It also accepts web map URLs and extracts all layers automatically.

1
Click + Add source and select ArcGIS REST / Web Map
2
Paste your URL

ARIA accepts three URL formats — paste whichever you have:

FormatExample
FeatureServer Recommended …/FeatureServer/0
FeatureServer (no index) Auto-fixed …/FeatureServer → ARIA appends /0
Web Map Viewer URL Auto-extracts all layers arcgis.com/home/item.html?id=…
If you paste a web map URL, ARIA fetches the map definition and adds every queryable layer as a separate source automatically. Public maps only — private maps require login.
3
Click Add source

ArcGIS sources are queried live when you draw a polygon — the features inside your polygon are fetched directly from the service. No data is cached locally.

If the query returns an error, the layer may require authentication or have CORS restrictions. Try opening the URL directly in your browser first to confirm it's publicly accessible.

Step 1 — Data sources · 5

Connect a WFS endpoint

WFS (Web Feature Service) is a standard used by many national spatial data infrastructures and open data portals.

1
Find your WFS GetFeature URL

A WFS URL typically looks like:
https://example.com/geoserver/ows?service=WFS&version=2.0.0&typeName=layername

2
Select WFS endpoint and paste the URL

ARIA appends a bounding box filter derived from your polygon when querying. You don't need to add BBOX parameters yourself.

WFS endpoints hosted on different domains sometimes block browser requests (CORS). If a WFS source returns an error, your IT team may need to configure the server to allow cross-origin requests, or you may need to use the data as a locally downloaded file instead.

Step 1 — Data sources · 6

Load a GeoJSON from a URL

If your data is hosted online as a GeoJSON file, ARIA can fetch it directly.

1
Click + Add source, select GeoJSON (URL)

Paste a direct URL to a .geojson or .json file — for example a GitHub raw file URL or an HDX download link.

2
Click Add source

ARIA fetches and caches the file in memory. It will show a green success message with the source name. The data is now available for polygon queries without a network request each time.

HDX datasets (data.humdata.org) often offer GeoJSON downloads. For shapefiles from HDX, download the .zip and drag-drop it instead — ARIA parses shapefiles natively.

Step 1 — Polygon · 7

Draw a polygon on the map

Use this when you want to define the hazard footprint manually or when exploring data coverage.

1
Navigate to your area of interest

Pan and zoom the map. If you have local data loaded, click ⊕ Fit map to data to jump straight to the right area.

2
Click the polygon tool

In the top-left of the map, click the pentagon-shaped draw icon. Your cursor will change to a crosshair.

3
Click to place vertices

Click once for each corner of your polygon. Click the first point again (or double-click) to close the shape. The query runs automatically as soon as the polygon is closed.

You can also use the rectangle tool for a quick bounding box query.
4
Edit if needed

Click the edit (pencil) icon in the map toolbar to drag vertices. The query re-runs automatically when you save the edit.


Step 1 — Polygon · 8

Paste a polygon from a warning

Use this when you have coordinates from a meteorological service, a flood model output, or any other external source. ARIA accepts three formats.

1
Find the Paste polygon box in the sidebar

It's below the data sources list. Click into the text area.

2
Paste your coordinates in any of these formats
FormatExample
Lat/lng pairs -1.94, 30.06
-1.94, 30.14
-2.01, 30.14

One pair per line. Comma or space separated.
GeoJSON {"type":"Polygon","coordinates":[[...]]}
Feature, FeatureCollection, or geometry object.
WKT POLYGON((30.06 -1.94, 30.14 -1.94, ...))
Standard Well-Known Text format.
3
Click ⬡ Draw polygon

ARIA draws the polygon on the map, zooms to it, and runs the query automatically.

ARIA auto-detects coordinate order. If the first value is greater than 90 it assumes longitude-first; otherwise it assumes latitude-first. This covers most met service formats.

Step 2 — Configure · 9

Load ARIA-Lex

ARIA-Lex is the seed library of pre-validated early action messages. Loading it means the AI will use approved language as its foundation rather than generating everything from scratch.

1
Download ARIA-Lex

Go to lastlarch.com/aria#aria-lex and download ARIA-Lex.db. Save it alongside ARIA.html or in a known location.

2
Click the library status indicator

In the top-right corner of ARIA you'll see a small indicator that says No library loaded. Click it to open the library settings panel.

3
Drop or browse to ARIA-Lex.db

Drag ARIA-Lex.db onto the drop zone, or click it to browse. The library loads in seconds. The indicator turns green and shows the message count.

You can also drag a .db file directly onto the main ARIA window at any time — it automatically routes to the library loader.
4
The library stays loaded for your session

You'll need to reload it each time you open ARIA, as no data is stored between sessions. This keeps your data local and private.


Step 2 — Configure · 10

Set hazard type, severity & authority level

These three settings control which library messages are retrieved and how the AI frames the output.

Hazard type

OptionDB codeUse for
Cyclone / HurricanecyTropical cyclones, hurricanes, typhoons
FloodflRiver flood, flash flood, urban flooding
HeatwavehwExtreme heat events
WildfirewfForest fire, bushfire
EarthquakeeqSeismic events
TsunamitsCoastal wave events
Cold wave / FreezecwExtreme cold, frost, snowstorm
Disease outbreakdoEpidemic, pandemic risk areas

Severity

LevelCAP urgencyUse when
ExtremeImmediateThreat to life, take action now
SevereExpectedSignificant impact likely, prepare now
ModerateFutureImpact possible, monitor and prepare
MinorFutureLimited impact expected

Authority level

OptionUse when
Auto — inferLet the AI decide based on the scale and type of your GIS data. Good default.
NationalAlert is being issued by a national agency, for national distribution
Regional / ProvincialAlert targets a province, region, or state
Local / OperationalAlert targets a district, municipality, or specific facilities
Individual / HouseholdAlert language is directed at members of the public
Once you set hazard and severity, ARIA shows a preview below the form indicating how many library messages exist for that combination — and which sectors they cover. This tells you before generating what the output will be grounded in.

Step 2 — Configure · 11

Connect an AI model

ARIA works with any OpenAI-compatible API. You provide the API key — it is stored only in your browser and never sent to Last Larch.

1
Choose a provider preset or set a custom endpoint
PresetProviderGet API key at
ClaudeAnthropicconsole.anthropic.com
GPT-4oOpenAIplatform.openai.com/api-keys
GeminiGoogleaistudio.google.com
CustomAny compatibleEnter your own endpoint URL and model name
2
Paste your API key

Click the preset button for your provider. The endpoint and model name fill in automatically. Paste your API key into the key field.

ARIA saves your key per provider in your browser's localStorage. You only need to enter it once — it will be there next time you open ARIA on the same computer and browser.
3
Advanced: use a custom or self-hosted model

Select Custom and enter your endpoint URL and model name. This works with any OpenAI-compatible API — including self-hosted models running via Ollama or similar tools. For self-hosted models, your data never leaves your network.

When generating descriptions, a summary of your GIS data is sent to the AI provider — feature counts, attribute names, and up to 40 sample rows per layer. No raw geometry coordinates are transmitted. Review your provider's data policy if handling sensitive infrastructure data.

Step 3 — Output · 12

Generate & read the output

Click Generate alert descriptions → and ARIA does the rest. Or use Library-only mode to skip the AI entirely.

1
Library-only mode — no AI required

If you have ARIA-Lex loaded and want to work on an air-gapped machine or without any AI API, tick the Library only (no AI) checkbox next to the Generate button. ARIA looks up matching pre-validated messages by hazard, severity and authority level and renders them directly — no internet connection required beyond the initial tool download.

All output in library-only mode is tagged Library. There is no Contextualised or Synthesised output — you get the validated text as written, nothing more.
Library-only mode cannot slot in specific place names or feature counts from your GIS data — that contextualisation step requires the AI. Decide based on your operational context which mode is appropriate.
2
AI mode — wait for the loading message

ARIA first queries your library, then calls the AI. The loading message tells you what's happening — for example: "Grounding against 24 library messages, then contextualising with local data…"

3
Read the source tags on each sector card

Every sector card has a tag in the top-left telling you where the language came from:

Library The pre-validated library message was used as written, with local names and counts filled in. This is the highest-confidence output — the core language has been approved.
Contextualised A library message was used as the starting point and meaningfully adapted with specific local data — named facilities, populations, or conditions from your GIS layers. Review before publishing.
Synthesised No library message existed for this sector and hazard combination. The AI generated the language from your GIS data alone. Treat with more caution — review carefully before publishing.
4
Check the library messages used section

On Library and Contextualised cards, a green panel shows the exact library messages the AI used as its source. This lets you verify the AI stayed true to your validated language.


Step 3 — Output · 13

Copy & export descriptions

1
Export a validation CSV from Step 1

Once you have query results in Step 1, a green ↓ CSV button appears in the results panel. Click it to download a flat CSV of every feature found across all layers — with source name, geometry type, coordinates, and all properties. This is a simple validation file to confirm what was surfaced before you generate alert language.

This CSV requires no AI and no library — it's just the raw GIS query output. Useful for record-keeping or sharing with colleagues who don't need the full alert text.
2
Copy a single sector description

Click the Copy button on any sector card. Both the <headline> and <description> are copied to your clipboard, formatted for pasting directly into a CAP editor.

3
Download all as .txt

Click Download .txt at the bottom of the results. You get a plain text file with all sector descriptions, labelled with their source tag ([LIBRARY], [CONTEXTUALISED], or [SYNTHESISED]) and the hazard/severity.


Reference · 14

Troubleshooting

?
The map isn't loading

You need an internet connection for the map tiles (CartoDB). Check your connection. The map tiles are the only part of ARIA that requires internet when not using API sources.

?
A source is showing an error

Open the URL in your browser directly. If you see a login page, the layer is private. If you see JSON, the issue is likely CORS — the server is blocking browser requests. Try downloading the data as a file and loading it locally instead.

?
No features found in my polygon

Check that the source's toggle is switched on (green). Click ⊕ Fit map to data to confirm the source data actually covers the area you've drawn your polygon in.

?
The AI is returning an error

The most common causes: wrong API key, wrong endpoint URL, or the model name is misspelled. Double-check all three. For Claude, make sure your key starts with sk-ant-. For OpenAI, sk-.

?
Library shows "No messages found"

The current hazard/severity combination may not have entries in your library file. Check the library preview in Step 2. The AI will still generate descriptions — they'll be tagged Synthesised.

?
Library-only mode gives no results

Check that ARIA-Lex is loaded (the indicator in the top-right should be green). Then confirm the hazard and severity combination you've selected has entries in the library — the preview in Step 2 will tell you. If it says "No library messages found", try a different severity level or check that the correct .db file is loaded.

Email fysh@lastlarch.com with a description of what you were doing and what happened. Screenshots help.


Reference · 15

Running the local library server

If you have GIS files stored on your computer that you want ARIA to load automatically — without dragging and dropping them each time — you can run a tiny local server that watches a folder and serves those files to ARIA.

1
Make sure Python is installed

Open a terminal (Command Prompt on Windows, Terminal on Mac/Linux) and type:

python --version

If you see a version number, you're ready. If not, download Python from python.org — the free installer takes two minutes.

2
Create your library folder

Create a folder anywhere on your computer — for example Documents/ARIA-Library/. Put your GeoJSON files in it. ARIA will load everything in this folder automatically.

Files must be GeoJSON (.geojson or .json). Shapefiles should be converted to GeoJSON first, or loaded via drag-and-drop instead.
3
Save this Python script as aria-server.py

Copy and save the following into a file called aria-server.py inside your library folder:

# ARIA Local Library Server — Last Larch
# Save this file in your GeoJSON library folder and run it.
# ARIA will connect to it automatically on localhost:8765

import http.server, json, os, urllib.parse

FOLDER = os.path.dirname(os.path.abspath(__file__))
PORT   = 8765

class Handler(http.server.BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_header('Access-Control-Allow-Origin', '*')
        path = urllib.parse.unquote(self.path)
        if path == '/layers':
            files = [f for f in os.listdir(FOLDER)
                     if f.endswith(('.geojson','.json')) and not f.startswith('.')]
            layers = [{'name': os.path.splitext(f)[0], 'filename': f} for f in files]
            body = json.dumps(layers).encode()
            self.send_response(200)
            self.send_header('Content-Type', 'application/json')
            self.end_headers()
            self.wfile.write(body)
        elif path.startswith('/file/'):
            fname = path[6:]
            fpath = os.path.join(FOLDER, fname)
            if os.path.exists(fpath):
                self.send_response(200)
                self.send_header('Content-Type', 'application/json')
                self.end_headers()
                with open(fpath, 'rb') as f:
                    self.wfile.write(f.read())
            else:
                self.send_response(404); self.end_headers()
        else:
            self.send_response(404); self.end_headers()
    def do_OPTIONS(self):
        self.send_response(200)
        self.send_header('Access-Control-Allow-Origin', '*')
        self.send_header('Access-Control-Allow-Methods', 'GET')
        self.end_headers()
    def log_message(self, *a): pass  # suppress terminal output

print(f'ARIA library server running — watching {FOLDER}')
print(f'Open ARIA and click Connect in the sources panel.')
http.server.HTTPServer(('localhost', PORT), Handler).serve_forever()
4
Run the server

In your terminal, navigate to the folder and run:

python aria-server.py

You'll see a confirmation message. Leave the terminal window open — closing it stops the server.

5
Connect from ARIA

Open ARIA in your browser. At the top of the sources panel you'll see Local library not connected. Click Connect. ARIA loads all GeoJSON files from your folder instantly and polls for changes every 10 seconds — so you can drop new files into the folder while ARIA is open and they'll appear automatically.

The server only accepts connections from your own computer (localhost). Your files cannot be accessed by anyone else.

Reference · 16

License & attribution

ARIA is free and open source. You are welcome to use, adapt, and share it — with one condition: credit Last Larch.

Creative Commons Attribution 4.0 International · CC BY 4.0

You are free to:

Under the following terms:

How to attribute ARIA

When using or adapting ARIA, include a credit line such as:

ARIA by Last Larch (lastlarch.com) · CC BY 4.0
Full license text

Read the full CC BY 4.0 license at creativecommons.org/licenses/by/4.0

Questions or custom implementations

If you're deploying ARIA within a national authority, UN agency, or research institution and would like support, customisation, or a formal partnership, contact Last Larch at fysh@lastlarch.com.