{"id":13423572,"url":"https://github.com/systemed/tilemaker","last_synced_at":"2026-04-01T17:26:22.846Z","repository":{"id":40614188,"uuid":"38220628","full_name":"systemed/tilemaker","owner":"systemed","description":"Make OpenStreetMap vector tiles without the stack","archived":false,"fork":false,"pushed_at":"2026-03-18T10:56:56.000Z","size":43416,"stargazers_count":1825,"open_issues_count":136,"forks_count":277,"subscribers_count":35,"default_branch":"master","last_synced_at":"2026-03-18T16:32:00.480Z","etag":null,"topics":["openstreetmap","vector-tiles"],"latest_commit_sha":null,"homepage":"https://tilemaker.org/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/systemed.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2015-06-29T01:06:21.000Z","updated_at":"2026-03-18T11:55:44.000Z","dependencies_parsed_at":"2024-05-15T22:14:42.562Z","dependency_job_id":"51f3adfc-4b0f-4992-a826-9761735321c5","html_url":"https://github.com/systemed/tilemaker","commit_stats":{"total_commits":480,"total_committers":50,"mean_commits":9.6,"dds":0.58125,"last_synced_commit":"a5d7def9f49abe4689004655ca382196cf75c3db"},"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/systemed/tilemaker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/systemed%2Ftilemaker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/systemed%2Ftilemaker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/systemed%2Ftilemaker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/systemed%2Ftilemaker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/systemed","download_url":"https://codeload.github.com/systemed/tilemaker/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/systemed%2Ftilemaker/sbom","scorecard":{"id":863959,"data":{"date":"2025-08-18","repo":{"name":"github.com/systemed/tilemaker","commit":"0ebc1d71680f78fdeeff28650643eab6dfc430bc"},"scorecard":{"version":"v5.2.1-41-g40576783","commit":"40576783fda6698350fcbbeaea760ff827433034"},"score":4.4,"checks":[{"name":"Maintained","score":2,"reason":"0 commit(s) and 3 issue activity found in the last 90 days -- score normalized to 2","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#maintained"}},{"name":"Code-Review","score":7,"reason":"Found 21/30 approved changesets -- score normalized to 7","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'contents' permission set to 'read': .github/workflows/ci.yml:161","Warn: no topLevel permission defined: .github/workflows/ci.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#binary-artifacts"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#security-policy"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENCE.txt:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v3.0.0 not signed: https://api.github.com/repos/systemed/tilemaker/releases/137080151","Warn: release artifact v2.4.0 not signed: https://api.github.com/repos/systemed/tilemaker/releases/97646588","Warn: release artifact v2.3.0 not signed: https://api.github.com/repos/systemed/tilemaker/releases/94868931","Warn: release artifact v2.2.0 not signed: https://api.github.com/repos/systemed/tilemaker/releases/61590254","Warn: release artifact v2.1.0 not signed: https://api.github.com/repos/systemed/tilemaker/releases/59226123","Warn: release artifact v3.0.0 does not have provenance: https://api.github.com/repos/systemed/tilemaker/releases/137080151","Warn: release artifact v2.4.0 does not have provenance: https://api.github.com/repos/systemed/tilemaker/releases/97646588","Warn: release artifact v2.3.0 does not have provenance: https://api.github.com/repos/systemed/tilemaker/releases/94868931","Warn: release artifact v2.2.0 does not have provenance: https://api.github.com/repos/systemed/tilemaker/releases/61590254","Warn: release artifact v2.1.0 does not have provenance: https://api.github.com/repos/systemed/tilemaker/releases/59226123"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#vulnerabilities"}},{"name":"Pinned-Dependencies","score":4,"reason":"dependency not pinned by hash detected -- score normalized to 4","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:65: update your workflow using https://app.stepsecurity.io/secureworkflow/systemed/tilemaker/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:68: update your workflow using https://app.stepsecurity.io/secureworkflow/systemed/tilemaker/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:93: update your workflow using https://app.stepsecurity.io/secureworkflow/systemed/tilemaker/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:112: update your workflow using https://app.stepsecurity.io/secureworkflow/systemed/tilemaker/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:143: update your workflow using https://app.stepsecurity.io/secureworkflow/systemed/tilemaker/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:166: update your workflow using https://app.stepsecurity.io/secureworkflow/systemed/tilemaker/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/systemed/tilemaker/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/systemed/tilemaker/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:44: update your workflow using https://app.stepsecurity.io/secureworkflow/systemed/tilemaker/ci.yml/master?enable=pin","Warn: containerImage not pinned by hash: Dockerfile:1","Warn: containerImage not pinned by hash: Dockerfile:43: pin your Docker image by updating debian:bookworm-slim to debian:bookworm-slim@sha256:b1a741487078b369e78119849663d7f1a5341ef2768798f7b7406c4240f86aef","Info:   0 out of   9 GitHub-owned GitHubAction dependencies pinned","Info:   4 out of   4 third-party GitHubAction dependencies pinned","Info:   0 out of   2 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#pinned-dependencies"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/ci.yml:154"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#packaging"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-24T02:10:19.049Z","repository_id":40614188,"created_at":"2025-08-24T02:10:19.049Z","updated_at":"2025-08-24T02:10:19.049Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31290537,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T13:12:26.723Z","status":"ssl_error","status_checked_at":"2026-04-01T13:12:25.102Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["openstreetmap","vector-tiles"],"created_at":"2024-07-31T00:00:37.807Z","updated_at":"2026-04-01T17:26:22.821Z","avatar_url":"https://github.com/systemed.png","language":"C++","funding_links":[],"categories":["C++","others","CLI Utilities"],"sub_categories":[],"readme":"# tilemaker\n\ntilemaker creates vector tiles (in Mapbox Vector Tile format) from an .osm.pbf planet extract, as typically downloaded from providers like Geofabrik. It aims to be 'stack-free': you need no database and there is only one executable to install.\n\nVector tiles are used by many in-browser/app renderers, and can also power server-side raster rendering. They enable on-the-fly style changes and greater interactivity, while imposing less of a storage burden. tilemaker can output them to individual files, or to .mbtiles or .pmtiles tile containers.\n\nSee an example of a vector tile map produced by tilemaker at [tilemaker.org](https://tilemaker.org).\n\n![Continuous Integration](https://github.com/systemed/tilemaker/workflows/Continuous%20Integration/badge.svg)\n\n## Getting Started\n\nWe provide a ready-to-use docker image that gets you started without having to compile tilemaker from source:\n\n1. Go to [Geofabrik](http://download.geofabrik.de/europe.html) and download the `monaco-latest.osm.pbf` snapshot of OpenStreetMap\n2. Run tilemaker on the OpenStreetMap snapshot to generate [Protomaps](https://protomaps.com) vector tiles (see below)\n\n```\n    docker run -it --rm -v $(pwd):/data ghcr.io/systemed/tilemaker:master /data/monaco-latest.osm.pbf --output /data/monaco-latest.pmtiles\n```\n\n3. Check out what's in the vector tiles e.g. by using the debug viewer [here](https://protomaps.github.io/PMTiles/)\n\nTo run tilemaker with its default configuration\n\n```bash\ndocker run -it --rm --pull always -v $(pwd):/data \\\n  ghcr.io/systemed/tilemaker:master \\\n  /data/monaco-latest.osm.pbf \\\n  --output /data/monaco-latest.pmtiles\n```\n\nTo run tilemaker with a custom configuration using coastlines and landcover you have two options\n1. In the config.json use absolute paths such as `/data/coastline/water_polygons.shp` or\n2. Set the docker workdir `-w /data` with relative paths `coastline/water_polygons.shp` (see below)\n\n```bash\ndocker run -it --rm --pull always -v $(pwd):/data -w /data \\\n  ghcr.io/systemed/tilemaker:master \\\n  /data/monaco-latest.osm.pbf \\\n  --output /data/monaco-latest.pmtiles \\\n  --config /data/config-coastline.json \\\n  --process /data/process-coastline.lua\n```\n\n## Installing\n\ntilemaker is written in C++14. The chief dependencies are:\n\n* Boost (latest version advised, 1.66 minimum)\n* Lua (5.1 or later) or LuaJIT\n* sqlite3\n* shapelib\n* rapidjson\n\nOther third-party code is bundled in the include/ directory.\n\nYou can then simply install with:\n\n    make\n    sudo make install\n\t\nFor detailed installation instructions for your operating system, see [INSTALL.md](docs/INSTALL.md).\n\n## Out-of-the-box setup\n\ntilemaker comes with configuration files compatible with the popular [OpenMapTiles](https://openmaptiles.org) schema, and a demonstration map server. You'll run tilemaker to make vector tiles from your `.osm.pbf` source data. To create the tiles, run this from the tilemaker directory:\n\n    tilemaker /path/to/your/input.osm.pbf /path/to/your/output.mbtiles\n\ntilemaker keeps everything in RAM by default. To process large areas without running out of memory, tell it to use temporary storage on SSD:\n\n    tilemaker /path/to/your/input.osm.pbf /path/to/your/output.mbtiles --store /path/to/your/ssd\n\nThen, to serve your tiles using the demonstration server:\n\n    cd server\n\ttilemaker-server /path/to/your/output.mbtiles\n\nYou can now navigate to http://localhost:8080/ and see your map!\n\n## Coastline and Landcover\n\nTo include sea tiles and small-scale landcover, run\n\n    ./get-coastline.sh\n    ./get-landcover.sh\n\nThis will download coastline and landcover data; you will need around 2GB disk space.\n\nHave a look at the coastline and landcover example in the [`resources/`](./resources) directory.\n\n## Your own configuration\n\nVector tiles contain (generally thematic) 'layers'. For example, your tiles might contain river, cycleway and railway layers. It's up to you what OSM data goes into each layer. You configure this in tilemaker with two files:\n\n* a JSON file listing each layer, and the zoom levels at which to apply it\n* a Lua program that looks at each node/way's tags, and places it into layers accordingly\n\nYou can read more about these in [CONFIGURATION.md](docs/CONFIGURATION.md).\n\nThe JSON configuration and Lua processing files are specified with `--config` and `--process` respectively. Defaults are config.json and process.lua in the current directory. If there is no config.json and process.lua in the current directory, and you do not specify `--config` and `--process`, an error will result.\n\nRead about tilemaker's runtime options in [RUNNING.md](docs/RUNNING.md).\n\nYou might also find these resources helpful:\n\n* Read our [introduction to vector tiles](docs/VECTOR_TILES.md).\n* See https://github.com/mapbox/awesome-vector-tiles for a list of renderers which support vector tiles.\n\n## Why tilemaker?\n\nYou might use tilemaker if:\n\n* You want to create vector tiles yourself, without a third-party contract\n* You don't want to host/maintain a database\n* You want a flexible system capable of advanced OSM tag processing\n* You want to create ready-to-go tiles for offline use\n\nBut don't use tilemaker if:\n\n* You want someone else to create and host the tiles for you\n* You want continuous updates with the latest OSM data\n\n## Contributing\n\nBug reports, suggestions and (especially!) pull requests are very welcome on the Github issue tracker. Please check the tracker to see if your issue is already known, and be nice. For questions, please use IRC (irc.oftc.net or https://irc.osm.org, channel #osm-dev) and https://community.osm.org.\n\nFormatting: braces and indents as shown, hard tabs (4sp). (Yes, I know.) Please be conservative about adding dependencies or increasing the memory requirement.\n\nThe Makefile does not currently pick up changes to header files (.h). If you change these, you may need to run `make clean` before building with `make` and `sudo make install`.\n\n## Copyright\n\ntilemaker is maintained by Richard Fairhurst and supported by [many contributors](https://github.com/systemed/tilemaker/graphs/contributors). We particularly celebrate the invaluable contributions of Wouter van Kleunen, who passed away in 2022.\n\nCopyright tilemaker contributors, 2015-2025.\n\nThe tilemaker code is licensed as FTWPL; you may do anything you like with this code and there is no warranty.\n\nLicenses of third-party libraries:\n\n- [kaguya](https://github.com/satoren/kaguya) is licensed under the Boost Software Licence\n- [libdeflate](https://github.com/ebiggers/libdeflate/) is licensed under MIT\n- [libpopcnt](https://github.com/kimwalisch/libpopcnt) is licensed under BSD 2-clause\n- [minunit](https://github.com/siu/minunit) is licensed under MIT\n- [pmtiles](https://github.com/protomaps/PMTiles) is licensed under BSD 3-clause\n- [polylabel](https://github.com/mapbox/polylabel) is licensed under ISC\n- [protozero](https://github.com/mapbox/protozero) is licensed under BSD 2-clause\n- [Simple-Web-Server](https://gitlab.com/eidheim/Simple-Web-Server) is licensed under MIT\n- [sqlite_modern_cpp](https://github.com/SqliteModernCpp/sqlite_modern_cpp) is licensed under MIT\n- [streamvbyte](https://github.com/lemire/streamvbyte) is licensed under Apache 2\n- [visvalingam.cpp](https://github.com/felt/tippecanoe/blob/main/visvalingam.cpp) is licensed under MIT\n- [vtzero](https://github.com/mapbox/vtzero) is licensed under BSD 2-clause\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsystemed%2Ftilemaker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsystemed%2Ftilemaker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsystemed%2Ftilemaker/lists"}