A Nach BSAFE
High-performance AI coding agent CLI written in Rust with zero unsafe code
Overview
High-performance AI coding agent CLI written in Rust with zero unsafe code
46a2537504c9OBSERVED · 2026-10-10What it tells the agent
The instruction file, verbatim from the audited commit — this is the text the model reads, and the surface the audit's instruction layer examines. Quoted here so you can judge it without cloning anything.
---
name: a-nach-b
description: Austrian public transport (VOR AnachB) for all of Austria. Query real-time departures, search stations/stops, plan routes between locations, and check service disruptions. Use when asking about Austrian trains, buses, trams, metro (U-Bahn), or directions involving public transport in Austria.
---
# VOR AnachB - Austrian Public Transport API
Query Austrian public transport for real-time departures, route planning, and service disruptions using the HAFAS API.
## Quick Reference
| Script | Purpose |
|--------|---------|
| `search.sh` | Find stations/stops by name |
| `departures.sh` | Real-time departures at a station |
| `route.sh` | Plan a trip between two locations |
| `disruptions.sh` | Current service disruptions |
**API:** HAFAS (Hacon Fahrplan-Auskunfts-System)
**Endpoint:** `https://vao.demo.hafas.de/gate`
---
## 1. Search Stations/Stops
Find station IDs by name:
```bash
./search.sh "Stephansplatz"
./search.sh "Wien Hauptbahnhof"
./search.sh "Linz"
./search.sh "Salzburg Hbf"
```
Returns station names, IDs (extId), and coordinates.
**Response fields:**
- `name`: Station name
- `extId`: Station ID for use in other queries
- `type`: S (Station), A (Address), P (POI)
- `coordinates`: WGS84 coordinates (lon/lat in 1e-6 format)
---
## 2. Real-Time Departures
Get next departures from a station:
```bash
./departures.sh <station-id> [count]
# Examples:
./departures.sh 490132000 # Wien Stephansplatz, 10 departures
./departures.sh 490132000 20 # Wien Stephansplatz, 20 departures
./departures.sh 490060200 # Wien Hauptbahnhof
./departures.sh 444130000 # Linz Hbf
./departures.sh 455000100 # Salzburg Hbf
```
**Response fields:**
- `line`: Line name (U1, S1, RJ, etc.)
- `direction`: Final destination
- `departure`: Scheduled departure time
- `delay`: Delay in minutes (if any)
- `platform`: Platform/track number
---
## 3. Route Planning
Plan a trip between two stations:
```bash
./route.sh <from-id> <to-id> [results]
# Examples:
./route.sh 490132000 490060200 # Stephansplatz → Hauptbahnhof
./route.sh 490132000 444130000 5 # Wien → Linz, 5 results
./route.sh "Graz Hbf" "Wien Hbf" # Search by name (slower)
```
**Response fields:**
- `departure`: Departure time
- `arrival`: Arrival time
- `duration`: Trip duration
- `changes`: Number of transfers
- `legs`: Array of trip segments with line info
---
## 4. Disruptions
Check current service disruptions:
```bash
./disruptions.sh [category]
# Examples:
./disruptions.sh # All disruptions
./disruptions.sh TRAIN # Train disruptions only
./disruptions.sh BUS # Bus disruptions only
```
---
## Common Station IDs
| Station | ID |
|---------|-----|
| Wien Stephansplatz | 490132000 |
| Wien Hauptbahnhof | 490134900 |
| Wien Westbahnhof | 490024300 |
| Wien Praterstern | 490056100 |
| Wien Karlsplatz | 490024600 |
| Wien Schwedenplatz | 490119500 |
| Linz Hbf | 444116400 |
| Salzburg Hbf | 455000200 |
| Graz Hbf | 460086000 |
| Innsbruck Hbf | 481070100 |
| Klagenfurt Hbf | 492019500 |
| St. Pölten Hbf | 431543300 |
| Wiener Neustadt Hbf | 430521000 |
| Krems a.d. Donau | 431046400 |
**Tip:** Always use `./search.sh` to find the correct station ID.
---
## Transport Types
| Code | Type |
|------|------|
| ICE/RJ/RJX | High-speed trains |
| IC/EC | InterCity/EuroCity |
| REX/R | Regional Express/Regional |
| S | S-Bahn (suburban rail) |
| U | U-Bahn (Vienna metro) |
| STR | Tram/Straßenbahn |
| BUS | Bus |
| AST | Demand-responsive transport |
---
## API Details (for advanced usage)
The scripts use the HAFAS JSON API. For custom queries:
```bash
curl -s -X POST "https://vao.demo.hafas.de/gate" \
-H "Content-Type: application/json" \
-d '{
"svcReqL": [{
"req": { ... },
"meth": "METHOD_NAME",
"id": "1|1|"
}],
"client": {"id": "VAO", "v": "1", "type": "AND", "name": "nextgen"},
"ver": "1.73",
"lang": "de",
"auth": {"aid": "nextgen", "type": "AID"}
}'
```
**Available methods:**
- `LocMatch` - Location/station search
- `StationBoard` - Departures/arrivals
- `TripSearch` - Route planning
- `HimSearch` - Disruptions/service messages
- `JourneyDetails` - Details of a specific journey
---
## Tips
1. **Find station IDs first**: Always use `search.sh` to find the correct station ID before querying departures or routes.
2. **Station vs Stop**: Major stations have multiple platforms - the main station ID covers all platforms.
3. **Real-time data**: Departures include real-time delays when available.
4. **Austria-wide**: This API covers all Austrian public transport, not just Vienna.
5. **Cross-border**: Some routes extend to neighboring countries (Germany, Czech Republic, etc.).Trust audit
SAFEgrade B · trust 89/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | WARN |
| L1 | Static analysis of the code | PASS |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- none-observed
- Network
- declared (4 observation(s))
- Shell
- none-observed
- Dependencies
- pinned
- Secrets in source
- none-found
Findings (1)
.beads/beads.jsonl
Gates applied: no_behavioural_pass.
46a2537504c9full audit observations/trust-audit/skill/dicklesworthstone__a-nach-b.json · Report an issue / request a re-scanAudit history
Every audit this skill has had.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-10 | 46a2537504c9 | SAFE | B | 89 | first audit |
Questions
What does the A Nach B skill do?
High-performance AI coding agent CLI written in Rust with zero unsafe code
Is A Nach B safe to install?
The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean skill reads B.
What can A Nach B access on my machine?
The audit observed that it reaches the network. Each of those is consistent with what it says it does. Secrets in the source: none found.
How current is this page?
The grade is for one exact copy of the source (46a2537504c9), read on 2026-10-10. The repository is watched, and a new audit runs when it changes — this is the first audit.