A Rust workspace for working with OpenStreetMap data end-to-end: parsing PBF, building spatial indexes, generating vector tiles, styling, rendering, and serving.
Status: early — 0.1.0, APIs will change.
Use the umbrella crate for the full SDK:
[dependencies]
osmic = "0.1"Or pull in individual crates as needed:
[dependencies]
osmic-core = "0.1"
osmic-osm = "0.1"
osmic-tiles = "0.1"| Crate | Description |
|---|---|
osmic |
Umbrella: re-exports, prelude, default plugin groups |
osmic-core |
Shared types, errors, coordinate primitives |
osmic-osm |
OSM data model, PBF parsing, tag system, classification |
osmic-geo |
Projection, simplification, clipping, validation |
osmic-index |
Node location store (mmap) and spatial R-tree index |
osmic-style |
MapLibre-compatible style system |
osmic-tiles |
MVT/MLT encoding, PMTiles archives, tile math |
osmic-render |
Backend abstraction, scene graph, tessellation |
osmic-text |
Text shaping, label collision, glyph atlas |
osmic-app |
Plugin system, App builder, event bus, lifecycle |
osmic-serve |
HTTP tile server with Tower middleware pipeline |
osmic-extract |
Business entity extraction from OSM PBF |
osmic-accel |
GPU-accelerated geometry processing (Apple Silicon Metal) |
osmic-repl |
OSM replication and incremental tile updates |
osmic-cli |
CLI for tile generation, PBF inspection, render-to-image |
osmic-viewer |
Interactive wgpu windowed map viewer |
use osmic::prelude::*;
fn main() -> OsmicResult<()> {
let app = App::new()
.add_plugins(osmic::HeadlessPlugins)
.run();
Ok(())
}See examples/ for full runnable programs:
load-pbf— parse a PBF file and index featuresrender-static— render a static PNG from a PBFtile-server— serve vector tiles from a PMTiles archivecustom-plugin— define and register a plugin
cargo build --workspace
cargo test --workspace
cargo clippy --workspace --all-targetsMinimum supported Rust version: 1.94.
MIT — see LICENSE.