Under heavy development by h4ck1ng.scienceReal-time collaborative canvasGeo-anchored cursors and presencePMTiles, COG, GeoParquet, GeoJSON, ZarrData read in place over HTTP range requestsDrop-to-clip: vectors filtered, rasters maskedGeodesic measurements and pinned notesShared timeline and sequencerSpatial SQL in the browser on DuckDB-WASMSPARQL layers3D modeMCP and Python agents, free on every planOffline-firstSelf-hostableNo telemetry

Docs

Your first canvas

Everything here happens in a browser tab: no account, no install, nothing to configure. In about five minutes you will have a room open, a colleague on it, data on the map and a shape drawn around the bit you care about. Every step says what to do on a computer and what to do on a phone, because they are genuinely different.

Open the canvas Opens a new room. Keep it beside this page and do the steps as you read.

Step 1

Open a room

Go to canvas.driades.app. You land on a start screen with two buttons: 🌲 New public room makes a room anyone with the link can open, and 🔒 Private workspace keeps it to you. Below them is a list of public rooms already running, and a field to paste a room link into. No account either way.

The Driades start screen on a laptop: a Collaborative geospatial canvas heading, New public room and Private workspace buttons, four cards describing what you can do, and a list of public rooms The same start screen on a phone, stacked into one column
Where you land, on a laptop and on a phone. Press New public room to begin.

Once you are in, the room's name is the part of the address after the #, something like #driades-ba4580f7. Everything you do next lives in that room: drawings, notes, layers, the timeline.

You also get an identity for the session — an adjective and a tree, say Swift Oak, with a colour of its own. That is what your collaborators will see moving around.

A new room opens on satellite imagery, so you start from what is actually on the ground. The 🗺 control changes the backdrop, and that choice is shared with the room — switch to terrain and everyone's canvas follows.

Step 2

Share it with someone

Press Share room in the room panel. It copies the full address to your clipboard. Send that to anyone: opening it puts them in the room. There is no invitation to accept and no permission dialog — the link is the access.

A Driades room on a laptop: the room panel with a Share room button top-left, the Layers panel on the right with one GeoJSON layer and its opacity slider, the time slider along the bottom, and the Draw, Data, Analysis, Time and View bar underneath
A room with one layer on it. Share room is top-left; the layer stack is on the right; the timeline and the tool bar run along the bottom.

On a computer

The room panel sits top-left, with everyone's avatar in it. Click an avatar to fly with that person — your map follows theirs until you touch your own map, which breaks the follow instantly.

On a phone

The same panel is there, and it minimises to give the map the screen back. Your finger position is broadcast as your cursor, so people watching on a laptop can see where you are pointing.

Try it with two windows before you try it with a person: open the copied address in a second window and drag a shape in one. It moves in the other.

Step 3

Move around

The map is the whole screen, so navigation is the first thing worth getting comfortable with.

To do thisOn a computerOn a phone
PanDrag with the left buttonDrag with one finger
ZoomScroll wheel, or double-clickPinch, or double-tap
RotateRight-drag, or hold Ctrl and drag. The rotate buttons turn 30° at a time and the compass snaps back to northTwist with two fingers; tap the compass for north
Tilt into 3DSame right-drag, upward — or the 3D button, with an exaggeration sliderDrag two fingers up the screen
Walk through it🚶 Walk swaps dragging for game controls: WASD to move, QE to turn, RF up and down, Shift to sprint, Esc to leaveNot a touch mode — it needs a keyboard

Rotating and tilting change your view only. Nobody else's map turns, and the data itself never moves — same as choosing a layer's opacity.

Step 4

Put data on the map

Driades reads cloud-native formats where they sit — usually with a few HTTP range requests, so a continent-scale archive costs you the tiles in view and nothing else. There is no import step and no upload.

On a computer

Drag a file onto the map. One or several, or a URL dragged as text. The drop overlay appears; let go anywhere.

On a phone

Use + Add layer in the layer panel, or + Import dataset… in the gallery — a phone has no drag and drop, so these are the same thing through a file picker.

Either way, two more routes work everywhere:

  • Paste a URL into the field in the 🗂 layer panel and press Enter. URL layers are shared with the room, so everyone loads the same thing.
  • The 🌍 catalogue, next to + Add layer: a shelf of curated public datasets — borders, regions, cities, rivers, lakes — each with its size, source and licence. One tap mounts it.
  • The 📚 gallery lists every file anyone in the room has dropped, streamed peer-to-peer. +map puts one on your map.

Formats it will take: .pmtiles, .tif and .tiff (Cloud-Optimized GeoTIFF), .parquet and .geoparquet, .geojson and .json, ordinary images, and .zarr stores by URL. Anything else is refused with a message rather than mounted invisibly.

Draw first to clip. If you draw an area and then drop a file onto that shape, the layer arrives clipped to it: vectors are filtered to the shape, rasters are pixel-masked to the polygon.

Step 5

The layer stack

The 🗂 panel is a stack in the image-editor sense. Each row has an opacity slider and a 👁 visibility toggle, rows reorder, and the order is what you see on the map.

On a computer

The panel sits on the right. Right-click a row for the rest: rename, zoom to it, isolate it, remove it.

On a phone

Swipe in from the right edge of the screen to open it. Press and hold a row for half a second to get the same menu a right-click gives — that is the touch equivalent, not a reduced version of it.

Layers you add are shared with the room, along with where they came from: description, attribution, licence and source URL travel with the layer, so a collaborator who never opened the catalogue still sees what they are looking at.

Step 6

Draw, annotate, measure

The toolbar holds ✋ Pan, ⬚ Select, 📍 Point, 〰 Line, ⬠ Area, ▭ Rect, ✏️ Free and 📝 Note. On a computer it runs down the left side; on a phone it docks along the bottom with targets big enough for a thumb.

Everything you draw is geo-anchored and streams as you draw it — collaborators see the shape forming, not just the finished object. Sticky notes are editable by two people at once.

To measure something, switch back to ✋ Pan and click or tap the shape: a chip gives its geodesic area and perimeter. Give it a name and the name travels with the document.

Step 7

Move through time

The slider along the bottom is the room's shared timeline. ● live shows everything; drag back and the canvas replays how the room's picture was built. Data with dates in it — a tree inventory with planting years, say — lights the slider up on drop.

Querying is not only SQL. Spatial SQL runs over your loaded layers with DuckDB in the browser, and SPARQL runs against any endpoint — Wikidata, your own store, or a graph published as a .rete file. Both land their results back on the canvas as layers; see working with .rete graphs.

Two things sit next to it. The 🎞 sequencer plays stacks of imagery as a flipbook, blended, or as a true per-pixel mean. And pulling up the footer bar gives you temporal channels: choose whether you are co-editing one timeline with someone or just following theirs, read-only.

What is different on a phone

Not a cut-down version — the same room, the same document, the same people. What changes is how you reach things:

The same room on a phone: the room panel and Share room at the top, round tool buttons stacked down the right edge, the live pill bottom-left, and the temporal bar along the bottom
The same room on a phone: tools become round buttons down the right edge, and the panels open over the map instead of beside it.
  • The toolbar docks to the bottom, with 44px targets, and the layer panel collapses out of the way.
  • Swipe in from the right edge for layers, from the left edge for your account. The swipe only counts if it starts within about 32px of the edge, so the rest of the screen still belongs to the map.
  • Press and hold for half a second wherever you would have right-clicked.
  • Two fingers twist to rotate and drag up to tilt.
  • Your finger position is your presence cursor, so people on laptops can follow what you are pointing at.
  • Drag and drop does not exist on a phone; use + Add layer, the 🌍 catalogue, or the 📚 gallery instead.

Working with .rete graphs

A .rete file is a self-describing knowledge graph: its header points at every section, and a dataset card inside it records who made it, the licence and the counts — so a reader can introduce the file over two HTTP range requests without ever downloading the graph. The historical atlas in our trees is one of these, read live in a browser.

You cannot drop a .rete file onto the canvas. It is not one of the formats the map reads, and dropping one gets you "Unsupported file type". What Driades does instead is meet rete at the point where a graph becomes geography — a query result — and there are three ways in.

Run a SPARQL query as a layer

In the 🗂 panel, open ▸ SPARQL query, give it an endpoint and a query, and press ▶ Run as layer. Each row becomes a point feature, and the layer arrives with an SPQ badge.

Coordinates are found in the bindings: a Point(x y) WKT literal first — which is what Wikidata's wdt:P625 gives you — otherwise variables named ?x/?lng/?lon/?long/?longitude and ?y/?lat/?latitude. A third value or a ?z/?elev/?alt/?height variable becomes elevation, and ?t/?date/?year/?inception and friends make the layer follow the shared time slider — bare years included. Every other binding rides along as a feature property.

The query is what gets shared, not the results. The endpoint and the query text go into the room's document and every peer runs them again, so nobody is streaming a graph to anybody. If the endpoint refuses a GET, Driades retries as a form POST.

Hand it a link

Any page — an atlas, a notebook, a dashboard — can push data in by linking:

https://canvas.driades.app/?layer=<data-url>#your-room
https://canvas.driades.app/?endpoint=<sparql-url>&sparql=<query>#your-room

?layer= repeats, so several layers can arrive at once. The parameters are self-consuming: once imported they are stripped from the address bar, so reloading — or sending the room link to a colleague — does not import everything a second time.

Push from a node editor, live

If your pipeline lives in a rete node editor, embed Driades in an iframe or open it in a popup and post to it as the graph changes:

driadesWindow.postMessage({ type: 'driades:add-layer', url }, '*')
driadesWindow.postMessage({ type: 'driades:add-layer', data: geojson, name }, '*')
driadesWindow.postMessage({ type: 'driades:add-layer', endpoint, query, name }, '*')

You get exactly one answer back — driades:layer-added with the name, or driades:error with a message. Inline GeoJSON goes through the same path as a dropped file, so z coordinates survive and time-ish properties still light up the slider.

Where next

This page is the short version. The full reference covers clipping, the dataset library, spatial SQL in the browser, SPARQL layers, the sequencer, analysis jobs, the agents API and self-hosting. Every page is also published as markdown, which is what the knowledge MCP reads.

Stuck? The ? button at the end of the footer bar opens the in-app quick guide, which is the same information without leaving the map.

Ask an assistant instead

If you would rather ask than read, the project answers questions directly inside ChatGPT and Claude. It speaks the Model Context Protocol at https://driades.app/mcp and it knows the dataset catalogue, the trees, every page of these docs, and SQL over all of it.

There is no key and no account. Everything it can reach is already published on this site, and every tool on it is read-only, so the worst it can do is tell you about a dataset.

ChatGPT

Connectors are a Plus, Pro, Business, Enterprise or Edu feature, and they are set up on the web rather than in the mobile app.

  1. Open Settings → Apps & Connectors → Advanced and turn on Developer mode.
  2. Back in Connectors, choose Create.
  3. Paste https://driades.app/mcp as the URL, name it Driades, and set authentication to No authentication.
  4. Create it, then pick it from the + menu in a chat.

It also works as a source for deep research, where ChatGPT searches the catalogue and then reads the entries it wants in full, citing the dataset it used.

Claude

One line in the terminal:

claude mcp add --transport http driades https://driades.app/mcp

In the Claude desktop and web apps, add it under Settings → Connectors → Add custom connector with the same URL.

Anything else that speaks MCP takes the same URL. In a JSON config it is {"type": "http", "url": "https://driades.app/mcp"}.

Useful things to ask it: which datasets cover canopy height, and what are their licences? · what is in the Spanish protected areas file? · how do I clip a raster? · count the datasets by licence.

This is the reading half. There is a second MCP server that can act on a canvas — draw, drop notes, add layers, scrub time — which is covered in the agents API page of the full documentation.