charly-versa
Self-contained skills + MCP wiring for the versa image — a marimo notebook environment (marimo + Airflow + OSM/GTFS analytics + martin vector tiles + five PMTiles generation pipelines: tippecanoe / gpq-tiles / DuckDB ST_AsMVT / DuckDB → freestiler / Shortbread-via-Tilemaker, plus PMTiles Viewer SPA on port 28001 + VersaTiles Frontend on port 28002 + versatiles serve as second tile server on port 28090). Ships marimo (port 22718) and airflow (port 29999) MCP servers.
By opencharlyLicense: MIT0 GitHub starsUpdated 1 hour ago
Directory evidence
- Runtimes
- Codex and Claude Code
- Parsed components
- 17 skill or MCP entries
- Source updated
- Aug 28, 2026
- Manifest status
- Canonical path parsed
The directory validates manifest shape and source location. It does not execute the plugin or provide a security endorsement. Review the indexing methodology →
Install plugin
codex plugin marketplace add IchenDEV/agent-plugin-mkt
codex plugin marketplace upgrade agent-plugin-marketplace
codex plugin add charly-versa@agent-plugin-marketplacePaste and run these commands in a terminal with Codex. They add and refresh the PluginsMP catalog, then install this plugin.
The installer fetches third-party code from the source repository shown on this page. This directory validates manifest structure and source location, but does not perform a security audit; review the manifest, components, and source before installing.
Get the source manually
git clone https://github.com/opencharly/marketplaceClone the source repository, then follow its setup instructions to add the plugin to a compatible client. The plugin root is versa/.
Plugin files
├── .codex-plugin/plugin.json├── .claude-plugin/plugin.json├── skills/airflow-layer/SKILL.md├── skills/debug-tools-layer/SKILL.md├── skills/maplibre-versatiles-styler/SKILL.md├── skills/maputnik-layer/SKILL.md├── skills/marimo-layer/SKILL.md├── skills/marimo-mcp/SKILL.md├── skills/notebook-osm/SKILL.md├── skills/osm-tools-layer/SKILL.md├── skills/pmtiles-viewer/SKILL.md├── skills/shortbread/SKILL.md├── skills/sway-browser-ecovoyage/SKILL.md├── skills/versa/SKILL.md├── skills/versatiles/SKILL.md├── skills/versatiles-fonts/SKILL.md├── skills/versatiles-frontend/SKILL.md├── skills/versatiles-style/SKILL.md└── .mcp.json
Included Skills16
Apache Airflow 3.x with LocalExecutor + SQLite (single-node, dev-friendly), 4 supervisord services (init, scheduler, dag-processor, webserver). Layer is service-only — its Python deps live in /charly-versa:marimo-layer's pixi env. No MCP wrapper (no upstream v2 release exists; consumers drive Airflow via direct REST /api/v2 calls). Use when working with the airflow layer, Airflow 3.x compatibility findings, the SimpleAuthManager auth-fix pattern, the dag-processor split-from-scheduler architecture change, or the JWT-issuance + REST API trigger flow used by self-authoring notebooks.
Debug toolkit for inspecting deployed services from inside the container — network probes (ip/ss/lsof/ping/dig/nc/socat/tcpdump/traceroute/mtr/wget), process inspection (ps/top/htop/pgrep/free/vmstat/strace/ltrace), file inspection (file/tree/xxd/vim/nano), system stats (iotop/iftop/sysstat), session helpers (tmux/rsync/yq). Distro-agnostic. Use when working with the debug-tools layer, the per-distro package-name divergence (nmap-ncat vs ncat vs gnu-netcat), or the 16 build-scope check probes that lock in headline binary presence.
maplibre-versatiles-styler is an interactive MapLibre control for switching presets, editing palettes, recoloring, fonts, language, satellite settings, and exporting style JSON. The local npm bundle avoids a CDN and is re-exported at /styler/. MUST be invoked before building, deploying, or troubleshooting the maplibre-versatiles-styler layer.
Maputnik — visual editor for MapLibre GL vector-tile styles. Pure-JS SPA built from upstream source via npm at image build time, served as static dist by python -m http.server. Pairs with osm-tools's martin tile server. Use when working with the maputnik layer, the Vite --base=/ build override (critical fix; default --base=/maputnik/ produces 404 asset paths), or the asset-base lock-in check test.
marimo reactive notebook server (also runs as MCP server via --mcp), GPU-accelerated OSM/GTFS analytics deps (cudf-polars-cu13, polars, geopandas, quackosm, gtfs-parquet), Apache Airflow Python deps (the airflow layer ships no pixi env), and the marimo-team/learn curriculum + marimo-team/skills bundle for you. Use when working with the marimo layer, its pixi environment, the supervisord service spec, or the cell-display + mo.iframe rendering patterns.
marimo's built-in MCP server (read-only inspection tools — get_active_notebooks, get_cell_outputs, get_notebook_errors, etc.) at port 2718 path /mcp/server. Use when working with the marimo MCP tool catalog, programmatic notebook diagnostics, or the cells-don't-execute-via-MCP gap (marimo MCP is read-only; cells run via WebSocket from a browser OR `marimo export ipynb --include-outputs` for headless execution).
Standalone marimo notebook (osm-monaco-viz.py) that self-authors TWO Airflow DAGs (osm + gtfs), triggers them via REST, runs polars + pyarrow analytics on both datasets, and renders TWO maps: streets via MapLibre GL JS + martin vector tiles + 3D terrain, transit via folium with 98 bus-stop CircleMarkers. Use when working with the notebook content itself, the dual-DAG self-authoring pattern, the two URL spaces (server-side AIRFLOW_API_INTERNAL_URL vs browser-bound MARTIN_PUBLIC_URL), the MapLibre/folium rendering split, or the surfaced-and-fixed bug catalog.
OpenStreetMap data pipeline tooling: tippecanoe (GeoJSON → MBTiles/PMTiles, built from source), gdal/ogr2ogr, jq, martin (Rust musl static binary on port 3000), pmtiles CLI. Martin reads tiles from /workspace/tiles/pmtiles/. Use when working with the osm-tools layer, tippecanoe build steps, the martin tile server config, the martin "Underlying data source was modified" cache issue + DAG-completion supervisord-restart pattern, or the vector-tiles-only output that requires MapLibre GL JS clients (NOT folium TileLayer).
PMTiles Viewer — visual inspector for PMTiles archives. TypeScript SPA from protomaps/PMTiles/app built via npm at image build time, served as a static dist by python -m http.server on port 8001 (host 28001). Pairs with the osm-tools layer's martin tile server to inspect all four sibling PMTiles archives the versa image produces. MUST be invoked before building, deploying, or troubleshooting the pmtiles-viewer layer.
Shortbread vector-tile schema generation via Tilemaker. The Shortbread schema (https://shortbread-tiles.org) is the de-facto general-purpose OSM vector-tile schema; the layer builds systemed/tilemaker (C++/Lua) from source and bundles the official shortbread-tiles/shortbread-tilemaker Lua + JSON configuration. The notebook's `notebook_osm_shortbread_pipeline` DAG invokes tilemaker on the Monaco PBF to produce `/workspace/tiles/shortbread/monaco-shortbread.pmtiles`, which the versatiles serve service auto-discovers. MUST be invoked before building, deploying, or troubleshooting the shortbread layer.
Sway-browser-vnc instance wired to versa/ecovoyage tailnet URLs — chrome-devtools-mcp + CDP for debugging the generated MapLibre + folium maps.
versa — image bundling marimo reactive notebook environment with Apache Airflow + GPU-accelerated OSM/GTFS analytics + martin vector tiles + 3D terrain via MapLibre + Polars geospatial extensions (polars-st, geopolars) + GeoArrow + deck.gl rendering via lonboard. Composes a marimo + airflow + OSM/GTFS analytics stack (agent-forwarding, nvidia, cuda, marimo, airflow, osm-tools, maputnik, notebook-osm, notebook-graph, debug-tools, dbus, charly, plus the versatiles tile-serving layers) on a CachyOS / Arch base into a single pod that exposes 7 host ports and 1 MCP server. MUST be invoked before building, deploying, configuring, or troubleshooting the versa image.
VersaTiles CLI (versatiles-rs) — a single Rust binary that handles `convert` / `serve` / `probe` / `dev` for the `.versatiles`, `.pmtiles`, `.mbtiles`, and `.tar` tile-container formats. Installed from the pre-built linux-x86_64-gnu tarball on GitHub releases. Ships a supervisord service running `versatiles serve` on port 8090 (host 28090) that watches `/workspace/tiles/shortbread/`, parallel to martin on 3000/23000. The `convert` subcommand is symmetric — PMTiles ↔ .versatiles ↔ MBTiles round-trip — and is exercised end-to-end by both the layer's deploy-scope check probe and a dedicated notebook cell. MUST be invoked before building, deploying, or troubleshooting the versatiles layer.
VersaTiles SDF font glyphs for MapLibre GL JS. Font families (Fira Sans, Lato, Libre Baskerville, Merriweather Sans, Noto Sans, Nunito, Open Sans, PT Sans, Roboto, Source Sans 3) bundled locally from versatiles-org/versatiles-fonts GitHub releases. Installed so the notebook's shortbread MapLibre cell renders labels without hitting tiles.versatiles.org as a runtime font CDN. Re-exported by the versatiles-frontend layer's http.server at /fonts/. MUST be invoked before building, deploying, or troubleshooting the versatiles-fonts layer.
VersaTiles Frontend — pre-built TypeScript SPA from versatiles-org/versatiles-frontend GitHub releases. Third static-SPA-via-python-http.server in the versa image (after maputnik + pmtiles-viewer). Served on port 8002 (host-mapped 28002). Also re-exports the versatiles-style layer's bundle at /style/ so the notebook's mo.iframe can reach it via an absolute URL. MUST be invoked before building, deploying, or troubleshooting the versatiles-frontend layer.
The @versatiles/style TypeScript package generates MapLibre style JSON for Shortbread vector tiles. Its local browser bundle avoids a CDN and is re-exported at /style/ for notebook iframe access. MUST be invoked before building, deploying, or troubleshooting the versatiles-style layer.
MCP servers1
- url
- http://localhost:22718/mcp/server
Plugin manifests2
{
"name": "charly-versa",
"description": "Self-contained skills + MCP wiring for the versa image — a marimo notebook environment (marimo + Airflow + OSM/GTFS analytics + martin vector tiles + five PMTiles generation pipelines: tippecanoe / gpq-tiles / DuckDB ST_AsMVT / DuckDB → freestiler / Shortbread-via-Tilemaker, plus PMTiles Viewer SPA on port 28001 + VersaTiles Frontend on port 28002 + versatiles serve as second tile server on port 28090). Ships marimo (port 22718) and airflow (port 29999) MCP servers.",
"author": {
"name": "opencharly"
},
"repository": "https://github.com/opencharly/marketplace",
"skills": "./skills/",
"interface": {
"displayName": "OpenCharly Versa",
"shortDescription": "Self-contained skills + MCP wiring for the versa image — a marimo notebook environment (marimo + Airflow + OSM/GTFS analytics + martin vector tiles + five PMTiles generation pipelines: tippecanoe / gpq-tiles / DuckDB ST_AsMVT / DuckDB → freestiler / Shortbread-via-Tilemaker, plus PMTiles Viewer SPA on port 28001 + VersaTiles Frontend on port 28002 + versatiles serve as second tile server on port 28090). Ships marimo (port 22718) and airflow (port 29999) MCP servers.",
"longDescription": "Self-contained skills + MCP wiring for the versa image — a marimo notebook environment (marimo + Airflow + OSM/GTFS analytics + martin vector tiles + five PMTiles generation pipelines: tippecanoe / gpq-tiles / DuckDB ST_AsMVT / DuckDB → freestiler / Shortbread-via-Tilemaker, plus PMTiles Viewer SPA on port 28001 + VersaTiles Frontend on port 28002 + versatiles serve as second tile server on port 28090). Ships marimo (port 22718) and airflow (port 29999) MCP servers.",
"developerName": "opencharly",
"category": "images",
"capabilities": [
"Instructions"
],
"defaultPrompt": [
"Use OpenCharly Versa for this OpenCharly task."
]
},
"mcpServers": "./.mcp.json"
}{
"name": "charly-versa",
"description": "Self-contained skills + MCP wiring for the versa image — a marimo notebook environment (marimo + Airflow + OSM/GTFS analytics + martin vector tiles + five PMTiles generation pipelines: tippecanoe / gpq-tiles / DuckDB ST_AsMVT / DuckDB → freestiler / Shortbread-via-Tilemaker, plus PMTiles Viewer SPA on port 28001 + VersaTiles Frontend on port 28002 + versatiles serve as second tile server on port 28090). Ships marimo (port 22718) and airflow (port 29999) MCP servers.",
"author": {
"name": "opencharly"
},
"homepage": "https://github.com/opencharly/charly",
"repository": "https://github.com/opencharly/marketplace",
"license": "MIT",
"keywords": [
"charly",
"marimo",
"airflow",
"notebook",
"geo",
"pmtiles",
"gpq-tiles",
"freestiler",
"shortbread",
"versatiles",
"versatiles-fonts",
"maplibre-versatiles-styler",
"tilemaker",
"mcp"
],
"mcpServers": "./.mcp.json"
}For maintainers
If you maintain this plugin, link to this source-backed listing from your README so users can review its manifest and indexed components.
[charly-versa on Agent Plugins Marketplace](https://pluginsmp.com/plugins/charly-versa)