| name | irail-cli |
| description | Query Belgian railway (NMBS/SNCB) schedules via the irail CLI. Use when the user wants train departures, connections between stations, train compositions, or service disruptions. Triggered by mentions of Belgian trains, NMBS, SNCB, iRail, train schedules, or railway delays.
|
| license | MIT |
| homepage | https://github.com/dedene/irail-cli |
| metadata | {"author":"dedene","version":"1.1.0","openclaw":{"requires":{"bins":["irail"],"anyBins":["jq"]},"install":[{"kind":"brew","tap":"dedene/tap","formula":"irail","bins":["irail"]},{"kind":"go","package":"github.com/dedene/irail-cli/cmd/irail","bins":["irail"]}]}} |
irail-cli
CLI for Belgian railways (NMBS/SNCB) via iRail API. No authentication required.
Quick Start
irail liveboard Brugge
irail connections Brugge Leuven
irail disturbances
Authentication
None required. iRail API is public and free to use.
Core Rules
- Always use
--json when parsing output programmatically
- Station names are flexible - accepts partial matches, quotes for multi-word
- Time format - HH:MM (24-hour), date format YYYY-MM-DD
- Language options - nl, fr, en, de (default: nl)
Output Formats
| Flag | Format | Use case |
|---|
| (default) | Table | User-facing with colors |
--json | JSON | Agent parsing, scripting |
Colors indicate: red = delays, yellow = platform changes.
Workflows
Liveboard (Departures/Arrivals)
irail liveboard Brugge
irail liveboard "Brussel-Centraal"
irail liveboard Brugge --arrivals
irail liveboard Brugge --time 09:00 --date 2025-02-15
irail liveboard Brugge --json
irail liveboard Brugge --lang en
Connections (Route Planning)
irail connections Brugge Leuven
irail connections Brugge Leuven --time 09:00
irail connections Brugge Leuven --time 14:00 --arrive-by
irail connections Brugge Leuven --results 10
irail connections Brugge Leuven --json
Stations
irail stations
irail stations --search bruss
irail stations --search gent
irail stations --json
Vehicle (Train Info)
irail vehicle IC1832
irail vehicle IC1832 --stops
irail vehicle IC1832 --json
Composition (Train Cars)
irail composition S51507
irail composition IC1832
irail composition S51507 --json
Disturbances
irail disturbances
irail disturbances --type planned
irail disturbances --type disturbance
irail disturbances --json
Scripting Examples
irail connections Brugge Leuven --json | jq -r '.[0].departure'
irail stations --search "brussel" --json | jq -r '.[0].id'
irail liveboard Brugge --json | jq '[.[] | select(.delay > 0)] | length'
irail liveboard Brugge --json | jq -r '.[0].platform'
irail disturbances --json | jq -r '.[].title'
Environment Variables
| Variable | Description |
|---|
IRAIL_LANG | Default language (nl, fr, en, de) |
IRAIL_JSON | Default to JSON output |
NO_COLOR | Disable colored output |
Language Options
| Code | Language |
|---|
nl | Dutch (default) |
fr | French |
en | English |
de | German |
irail liveboard Brugge --lang fr
irail connections Brugge Leuven --lang en
Command Reference
| Command | Description |
|---|
liveboard | Station departures/arrivals |
connections | Route planning between stations |
stations | List/search stations |
vehicle | Train information and stops |
composition | Train car composition |
disturbances | Service disruptions |
completion | Shell completions |
Common Patterns
Check if train is delayed
irail vehicle IC1832 --json | jq '.delay // 0'
Get connection with transfers
irail connections Brugge Leuven --json | jq '.[0].vias | length'
Find direct trains only
irail connections Brugge Leuven --json | jq '[.[] | select(.vias == null or (.vias | length) == 0)]'
Guidelines
- No authentication needed - API is public
- Be mindful of API usage in loops - add delays between requests
- Station names are case-insensitive and support partial matching
- Delay values are in seconds (divide by 60 for minutes)
Installation
brew install dedene/tap/irail