odh is an unofficial command-line interface for public Open Data Hub APIs, with compact human output for curated workflows and JSON output for scripts and agents.
This is a community project, not affiliated with or endorsed by NOI Techpark or Open Data Hub. Most practical Tourism and Mobility data is centered on South Tyrol; verify record-level geography from returned coordinates and origins rather than assuming it.
- Discovery: known APIs, curated dataset catalog, OpenAPI specs, Tourism taxonomies, Mobility station/event/edge types, origins, and data types.
- Raw access: call any registered API path with query parameters.
- Mobility: stations, latest time-series measurements with active/freshness/sorting filters for availability questions.
- Traffic: deduplicated South Tyrol roadworks, closures, and road events from
PROVINCE_BZwith zone discovery, date filtering, text search, and stale-record warnings; A22 event/forecast inspection with explicit caveats. - Transit: GTFS datasets, live GTFS-RT feeds, stop search, departures, direct trips, and static transfer-journey planning with optional realtime annotations.
- Data quality: diagnostics verdicts for EV charging availability, parking forecasts, and Tourism events before answering from those areas.
- Robustness: bounded retries, 24h caching of static-ish discovery responses, global
--timeout, provenance and warning fields on curated JSON output. - MCP server mode exposing the curated commands as Model Context Protocol tools.
Not included: authenticated write flows, live transit rerouting, historical GTFS-RT delay archives, and historical A22 incident reconstruction. Unsupported capabilities are reported explicitly instead of guessed.
curl -fsSL https://raw.githubusercontent.com/galjos/odh-cli/main/scripts/install.sh | shThe installer detects macOS/Linux and amd64/arm64, verifies the published SHA-256 checksum, and installs to ~/.local/bin. Pass --version v0.3.0 --dir "$HOME/bin" to pin a version or directory.
Alternatives:
brew install galjos/odh/odh
sudo apt install ./odh_v0.3.0_linux_amd64.deb # from GitHub Releases
go build -o odh ./cmd/odh # from sourceReleases include per-asset checksums, a SHA256SUMS manifest, and GitHub artifact attestations (gh attestation verify <asset> --repo galjos/odh-cli). Shell completions: odh completion bash|zsh|fish|powershell.
odh doctor
odh apis
odh datasets search parking
odh call tourism /v1/ODHActivityPoi --param pagesize=1 --param fields=Detail.en.Title,GpsInfo
odh mobility origins --station-type ParkingStation
odh mobility latest --station-type EChargingStation --data-type number-available --active --fresh-within 24h --sort newest --limit 5
odh diagnostics parking-forecasts --origin "Municipality Merano" --fresh-within 2h
odh traffic today --area ueberetsch-unterland --type roadworks --format table
odh traffic search "road closed badia" --today --json
odh a22 status --limit 10
odh transit stops search merano --limit 10
odh transit journey --from merano --to ora --time 16:40 --max-transfers 3 --with-realtime --jsonEvery command documents flags and examples in odh <command> --help.
odh is script and agent friendly: stdout is data (JSON via --json or --format json), stderr is diagnostics, exit code 2 means bad invocation and 1 runtime failure, and commands are non-interactive. The contract, caveats, and stable JSON fields are documented in docs/agent-usage.md and docs/json-contracts.md.
Run the same surface as MCP tools (see docs/mcp.md):
claude mcp add odh -- odh mcp serveMachine-readable command recipes are in evals/agent/recipes.json; the agent skill bundle is in skills/open-data-hub-cli/SKILL.md.
go fmt ./... && go vet ./... && go test ./... && go build ./cmd/odhSee docs/development.md, docs/release.md, and docs/evaluation.md. Release notes are in CHANGELOG.md; planned work is tracked in GitHub issues.
- APIs and access: https://opendatahub.com/api/
- Datasets: https://docs.opendatahub.com/en/latest/datasets.html
- Tourism Swagger: https://tourism.opendatahub.com/swagger/index.html
- Mobility spec: https://mobility.api.opendatahub.com/v2/apispec