Torus Train Ops User Guide
Torus Train Ops turns your layout into an operating railroad. You describe the places, industries and equipment you already have; it works out what traffic that railroad would generate, writes the orders, assigns the cars, and hands each crew member the work in front of them.
The short version: you build your railroad once, then start a session. Each session, orders are generated from your consignments, you assign cars and jobs, and your crew works those jobs until the work is done.
Help is built in. Everything in this guide is also inside the application: Trainmaster → Help & Documentation opens the Help Center with the same guides. Questions, problems or feedback — email support@railworksstudio.com any time.
Getting Started
Installing Torus Train Ops, activating your licence and getting your crew connected. It assumes you know model railroading. It does not teach operations; it explains how Torus thinks, so what you already know maps onto what’s on screen.
System requirements
- Windows 10 or 11 (64-bit)
- About 200 MB of free disk space
- A local WiFi or wired network, if you want phones, tablets or other computers to join as crew
Torus Train Ops runs entirely on your own computer and local network. No internet connection is needed for day-to-day use, including running a full session with a crew. The only exceptions are activating your licence — a one-time step — and the optional update check at startup. Offline, the update check is skipped and everything else carries on normally.
Installing
- Download the installer from the link provided after your purchase.
- Double-click it to run.
- Windows may show a blue “Windows protected your PC” screen. This is normal for newly published software and is not a sign anything is wrong. Click More info, then Run anyway.
- The installer runs automatically and creates a Torus Train Ops shortcut on your desktop and in your Start Menu.
- Open it from that shortcut.
If your antivirus flags the installer, this is a known false positive that new, unsigned software sometimes triggers. Torus Train Ops does not collect or transmit any of your layout data anywhere except your own devices on your own network.
Activating your licence
The first time you open the application, an activation window asks for a licence key.
- Find the key in the email receipt from your purchase.
- Copy it and paste it into the box.
- Click Activate.
Once activated, your licence is remembered on this computer. You won’t be asked again unless you reinstall Windows or move to a different machine.
Each licence activates a limited number of devices, shown on your purchase page. There is currently no way to deactivate a device from inside the application — if you need to move to a new computer, or you’ve reached your limit, email support and we’ll free the slot for you.
Windows Firewall
The first time it runs, Windows may ask whether it can communicate on your network.
- Click Allow
- Make sure Private networks is ticked
This happens once, and it’s required for crew devices to connect.
Signing in and choosing a role
Each person signs in with their name and a role. Roles decide what that person can see and do, so a whole crew can work from their own devices at once.
| Role | What they can do |
|---|---|
| Operator | Run assigned trains and work their cars |
| Dispatcher | Build the work, issue orders and assign crews; everything an Operator can do |
| Trainmaster | Configure the railroad, change settings, restore backups — full access |
The Trainmaster role can be protected with a PIN, set in Trainmaster → Security. On a fresh install there is no PIN.
Keep your Trainmaster PIN somewhere safe. There is no automatic “forgot PIN” recovery — contact support if you get locked out.
Connecting crew devices
The application runs a small server on the computer it’s installed on. Any phone, tablet or laptop on the same network can join as crew — nothing to install on those devices.
- Open Torus Train Ops on the layout computer.
- Go to Trainmaster → Connect Crew Devices and read the address shown there — something like
http://192.168.1.5:3000. - On the crew device, open a browser and enter that address.
- Sign in with a name and role.
Changes made on any device appear on all the others automatically.
Every device must be on the same network as the host computer. If one can’t connect, check that your router isn’t isolating devices from each other — this is sometimes called “AP isolation” or “client isolation”.
This is designed for a private network — the one your layout room’s router creates. Avoid running it on public or open WiFi, such as at a show or a club open house, where other people’s devices share the network.
Recommended: set a static IP on the layout computer so the address never changes between sessions. Searching “how to set a static IP Windows 11” will find current instructions.
Where your data lives
Your layout database, photos and backups all live in one folder:
%APPDATA%\Torus Train Ops
Paste that into the File Explorer address bar to open it. Backups are in the backups subfolder.
Uninstalling does not delete this folder, so your railroad and its backups survive reinstalling or upgrading.
Backups
Save a backup before any big change and at the end of every session. It takes seconds and it’s the best protection you have.
- Go to Trainmaster → Backup & Restore.
- Type a name —
after-session-3, for instance — and click Save Backup. - To restore, click Restore from File, choose the backup, then close and reopen the application.
Backups are plain files, so you can copy them to a USB drive or cloud storage for a second copy.
Warning: restoring replaces everything currently in the application. Save a backup of your current state first.
Adding photos
Locomotives and cars can each carry a photo.
- Edit any locomotive or car.
- Click the 📁 button beside the photo field.
- Browse to your photo — it’s copied into your data folder automatically.
Supported formats: JPG, PNG, GIF, WebP.
Tip: name photo files after the road number — BRW-487.jpg, NS-7511.png — so they’re easy to find.
Uninstalling
Go to Windows Settings → Apps, find Torus Train Ops and uninstall.
Your layout data and backups are not deleted. Back them up first if you want to keep them.
Installation troubleshooting
The application won’t open
Check the taskbar — only one copy can run at a time, and a second attempt will do nothing if one is already running.
A crew device can’t connect
- Confirm both devices are on the same network.
- Check the address on the device matches exactly what the Trainmaster page shows, including the
:3000port. - Some routers isolate devices from one another for security; check that setting if nothing else explains it.
The licence won’t activate
- Check the key was copied completely, with no trailing space.
- Activation needs a brief internet connection.
- If you’ve reached your device limit, contact support to free a slot.
Do I need an internet connection?
Only to activate your licence. Running sessions is entirely local.
Where is my data?
In %APPDATA%\Torus Train Ops, alongside photos and backups. Uninstalling doesn’t delete it.
How Torus Works
Its concepts, its workflow, and the order everything happens in.
Core concepts
Six ideas carry the whole application.
Locations
A Location is a place on your layout — a town, a yard, a junction, an interchange. Locations nest: a Yard can sit inside a Town, which is how “Millbrook Yard, at Millbrook” is expressed. Settlements (Towns, Cities) are the parents; railroad features (Yards, Junctions, Interchanges) are the children.
Industries
An Industry is anywhere a car is worked — a mill, an elevator, a team track, a yard office. Each belongs to one location and has tracks; each track has a number of spots, meaning how many cars fit.
An industry declares what it receives and what it ships, in commodities. That is what makes traffic possible.
Commodities and Car Types
A Commodity is what moves — lumber, grain, coal. A Car Type is what carries it, in AAR codes (XM boxcar, LO covered hopper). Commodities know which car types can carry them, so a boxcar is never assigned to a load that needs a tank car.
Rolling Stock and Locomotives
Your actual equipment. Each car has a road number, a car type, a home location (where it belongs) and a current location (where it is now). Locomotives are assigned to jobs as power.
Consignments
A Consignment is a standing traffic pattern: this industry regularly ships this commodity to that industry, this many cars at a time. Consignments are rules; they don’t move anything themselves.
This is the piece newcomers most often miss. You don’t create orders by hand. You describe recurring traffic once, and each session fresh orders are written from those rules. Get your consignments right and your railroad generates its own work indefinitely.
Routes & Jobs
A Job — a train — has a route, the ordered list of locations it serves, and optionally assigned power. Orders are given to jobs, and a job can only work an order whose pickup and delivery are both on its route.
How they fit together
- Consignment the rule
- Order this session
- Assigned to a Car and a Job Distribution Desk
- Worked by a crew Crew Workspace
- Closed
Follow along with the Cedar River Railroad
A small sample railroad ships with the application: the Cedar River Railroad, a 1980s Midwest short line with three towns, seven industries and two jobs. Go to Trainmaster → Backup & Restore → Restore from File and choose Cedar River Railroad - Sample.json, then close and reopen. It’s the fastest way to see how a finished railroad is put together, and it’s the railroad used in the how-to videos and in this guide.
Warning: restoring replaces everything currently in the application. Back up your own work first — see Backups.
Build Your Railroad
Build Your Railroad holds nine cards in three groups. Build them in this order — each depends on the ones before it.
Foundation
- Railroad Profile — name, road name, era, scale. Cosmetic, but it appears on printed paperwork.
- Locations — every town, yard, junction and interchange. Create settlements first, then the railroad features inside them.
- Car Types — the AAR types you run. A standard set is already there; add or edit as needed. This is the one card that opens a dialog rather than a page of its own, and the same dialog is reachable from the Car Type field on any car. A type’s code is what every car, consignment and commodity refers to it by, so once anything uses a code it can’t be changed — the name and description still can. A code nothing uses yet can be changed freely (
GBtoGON, say).
Equipment
- Commodities — what your railroad hauls, and which car types can carry each.
- Rolling Stock — your cars. Bulk-import from a spreadsheet or JMRI rather than typing; see Import & Export.
- Locomotives — your engines, with home locations.
Work
- Industries — where cars are worked. For each: its location, its tracks and spots, and what it receives and ships. Every track needs a name, and no two tracks at the same industry may share one — beyond that, name them however you like:
Receiving,WBST1and12are all fine. Renaming a track later carries the cars standing on it along. - Consignments — the recurring traffic between industries. This is where the railroad comes alive.
- Routes & Jobs — the trains, and the stops each one makes.
Start small, name things your way
Tip: start smaller than you think. Three industries and two jobs produce a real, working session you can learn from in an evening, and nothing has to be redone when you add the rest of the layout later.
Names are yours. Locations, industries, tracks, commodities and jobs can be called anything — full names, abbreviations or plain numbers — and renaming one later updates it everywhere. The one thing that behaves like a key is a car type’s code, above.
Can I rename things once the railroad is running?
Yes. Names aren’t what the railroad runs on — rename a location, industry, track, commodity or job and everything follows. The exception is a car type’s code, which is locked while anything uses it.
Distribution Desk
A session is one operating day. It starts here, where the railroad’s traffic becomes actual work.
This is where consignments become orders. A consignment is the general idea that an industry regularly ships something somewhere. An order is an actual shipment that needs an actual car and an actual job. The Desk is where you manage car orders, waybills and train assignments before pickup: you see the orders, assign the equipment, assign the job that will handle them, and watch each order’s readiness change as it’s prepared for movement.
The flow to keep in your head is simple: a consignment creates an order; the order gets a car and a job; the crew works it; the order is closed. That’s the heart of Torus.
Issue the orders
Go to Operations Center → Distribution Desk and click Issue Car Orders. This opens a new session and writes its orders in one step: your consignments are read, today’s traffic is decided, and the orders appear on the Desk. You’ll be told how many were issued.
For a one-off move that no consignment covers, Manual Order writes a single order by hand: from industry, to industry, commodity, car type, and optionally the job. It’s marked M on the Desk.
What the Desk shows
Each row is one order — one car movement:
- Consignment — what’s moving, from which industry to which, and the reference to quote (WB-…). A Return badge marks an empty going home.
- Required Car — the car type the order needs, or Any.
- Assigned Car — the road number, with the car’s own status under it. Click the number to open the car.
- Assigned Train — the job that will work it.
- Readiness — what the order needs next (below).
- Action — Assign, and Del for an order that hasn’t been picked up yet. Once a car is picked up, the order must be worked, not deleted.
The chips above the list filter by readiness and show a count of each:
| Readiness | Meaning |
|---|---|
| Open | Needs a car |
| Awaiting Train | Has a car, needs a job to work it |
| Awaiting Departure | Has a car and a job; waiting for the crew to pull it |
Readiness is a reading of the order, not a status of its own: an order showing Awaiting Train or Awaiting Departure is Applied in the status table below. Awaiting Train is where a return order from Send Empties Home lands — it arrives with its car already attached and needs only a job.
Click anywhere on a row to open the order: its status, the car and where it’s standing, the job handling it, and a timeline of everything recorded against it.
Once the assigned car is picked up, the order leaves the Desk — the railroad is now working that movement. The crew works the train in the Crew Workspace, and Yardmaster tracks and manages the order from there. Consignments in Progress, opposite the chips, opens those orders read-only.
Assign cars and jobs
Every new order starts Open — it knows what needs to move and where, but not which car or which train.
Assign each order by hand from the Desk, or click Auto Assign to match suitable cars and jobs across all unassigned orders at once. An order with both a car and a job becomes Applied, ready for a crew.
To assign by hand, click Assign on the row. The Assign Car & Train dialog offers:
- Train — the jobs whose route includes the pickup location. Jobs that can’t take the order are listed under Not eligible with the reason: the route doesn’t include the pickup, or the job isn’t permitted to pick up there or deliver to the destination. If no job serves the pickup at all, the dialog says so and tells you to add that location as a route stop on a job.
- Car — cars that are Available (or set out and waiting for their next train), of the required type, able to carry the commodity, and not already on another active order. Each is listed with its type, status and where it’s standing.
Choose a job and a car and click Save Assignment. A job is required; a car can be left for later.
Auto Assign works only on orders with no car. For each one it picks the car and the job together — a job can only be chosen once it’s known where the car is — preferring a car whose home is the pickup location, since that car needs no empty move. It tells you how many were assigned and how many were skipped for want of a matching car or job.
Changing an assignment
Click Assign again on an order that already has a car or a job. The dialog opens with the current choices selected; pick a different job or a different car and save. The car it was taken off goes back to Available.
The car is locked once it has been picked up — the dialog shows Car is active — cannot be changed — because from that moment it’s in the crew’s consist. Re-crewing a car that’s already rolling is done from Yardmaster, not the Desk.
Order statuses
| Status | Meaning |
|---|---|
| Open | Written, but no car and no job yet |
| Applied | A car and a job are assigned; ready to be worked |
| In Transit | The car has been picked up and is moving |
| Working | The car is at its destination being loaded or unloaded |
| Closed | Done |
On the Desk, an Applied order shows as Awaiting Train or Awaiting Departure, depending on whether it has its job yet — see What the Desk shows.
Why an order might not assign
If Auto Assign leaves an order Open, it’s usually one of two things:
- No suitable car — nothing Available of a car type that can carry the commodity.
- No job serves the route — no job’s route includes both the pickup and the delivery location.
A full destination is handled a step earlier: when a session is issued, an industry with no free spot on its working tracks isn’t sent more cars that session, so those orders never appear. The Unfulfilled Traffic report names the reason for each one.
Do I have to create orders by hand?
No. Write consignments once and each session generates its own orders. Manual orders exist for one-off moves.
Crew Workspace
Crews open the Crew Workspace, pick their train and work it. Each pickup and set-out is recorded as it happens.
Pick up and set out
A crew picks a train on the left and works it on the right. Each move is recorded as it’s made: a pickup marks the car On Train; a set-out spots it and asks whether it’s properly spotted.
The Industry Status pane shows the cars loading or unloading at each industry and how many sessions each has left. The crew can click ✓ Done on a car to complete its loading or unloading immediately, instead of waiting for the configured session count.
Car statuses
| Status | Meaning |
|---|---|
| Available | Free to be assigned |
| Assigned | Spoken for by an order, not yet moved |
| On Train | Picked up, riding in a train |
| At Industry | Spotted at its destination |
| Released | Work finished, waiting to be pulled |
| Held at Yard / Interchange | Set out at a yard or interchange with no industry chosen — waiting for a job to take it on |
Two further facts travel with a car: its lading — Loaded or Empty — and, when it’s at an industry, its placement: Properly Spotted or Off Spot.
When the track is full on arrival
Room is checked when orders are issued, not when the train pulls in, so a crew can still find the track full — another job got there first, or a car that should have been pulled wasn’t. The set-out dialog shows how many spots each track has open and won’t confirm a set-out onto a full one. The crew has the same choices a real crew has:
- Use the industry’s overflow track, if it has one. The car is delivered but sits Off Spot, and comes back onto a switch list for the spotting move once a job is assigned to it.
- Set it out at a yard or interchange with no industry chosen. The car is Held at Yard or Held at Interchange, the order stays In Transit, and the car waits — on the Yardmaster board under Not Assigned — until you assign a train to continue the movement: a different job, or the same job in a later session. Nothing moves it automatically; the timing is yours. See When the destination can’t take the car.
Either way the order is not lost and no work is invented.
My car is at the right industry but the order isn’t closing.
Check the placement. A car set out Off Spot has arrived but isn’t properly spotted, so its work isn’t complete.
The track was full when my train arrived. What now?
See When the track is full on arrival: use the overflow track, or set the car out at a yard or interchange and give it a job when you’re ready.
Can I run without a crew?
Yes. Sign in as Trainmaster and work the jobs yourself — everything behaves the same solo.
Yardmaster
Work already rolling — routing, handoffs, and moving the railroad on a session.
Yardmaster is where you manage car routing, handoffs and train assignments while the railroad operates. The crew works the trains in the Crew Workspace; Yardmaster manages and tracks the active orders while they’re being worked. You can see where every car is and what it’s doing, and whenever a car needs another train to continue its movement — from a yard, an interchange, or wherever it was set out — this is where you assign the job that will make it.
What the board shows
Each row is one car and the order it’s on:
- Car — road number and type. Click the number to open the car.
- Current Location — the location and industry, with the track and spot beneath.
- Car Status — what the car is doing: Loading, Unloading, Held at Yard, Held at Interchange, Off Spot, or Ready to Pull.
- Train — the job currently assigned, in the job’s colour; click it to show only that job’s cars. A car with no job assigned reads Not Assigned. Beneath it, the jobs that could take the car are listed, best first — these are suggestions only; nothing is assigned until you assign it.
- Destination — where the car is going, and the waybill reference. Click the reference to open the waybill (or, for an empty going home, the Empty Car Return slip).
- Load — the commodity, or the car’s lading if the order names none.
- Action — Assign.
A row marked at its left edge is a car waiting on a decision: held at a yard or interchange, standing off spot, or ready to pull. A car that is loading or unloading isn’t marked.
The chips filter the board. In Transit and Working are the order’s status; Not Assigned shows every car with no job currently assigned, whichever status its order is in. Click anywhere on a row to open the order — the same view the Desk opens.
Set-outs and the train assignment
When a crew sets a car out, the car is no longer on that train, so its job assignment is cleared and the row reads Not Assigned. At an industry the car may then be loading or unloading; that’s correct — it’s being worked, and no train is assigned to it. When the car later needs another movement, you assign it to the job that will make it.
Loading and unloading
Loading and unloading are counted in operating sessions, as set on the consignment — not in clock time. The work completes in either of two ways:
- its session count reaches zero as sessions advance (through Issue Car Orders or Advance Session), or
- the crew clicks ✓ Done on the car in the Crew Workspace to complete it immediately.
When loading completes, the car is released and loaded, and Yardmaster shows it as Ready to Pull — it’s waiting for a job to take it on. When unloading completes, the car is released and empty, and the order closes. Getting the empty home is a separate movement, handled according to Return Car Behavior in Railroad Operations: with Generate Orders, immediately, or manually with Send Empties Home.
When the destination can’t take the car
If the working track at the destination is full, Torus refuses that set-out — the crew can’t spot the car there. The crew chooses another valid option:
- The industry’s Overflow track, if it has one. The car is set out Off Spot at the destination, and the order stays Working. Assign a job to it when a spot opens; that job moves the car onto the working track.
- A yard or interchange, with no industry chosen. The car is Held at Yard or Held at Interchange, the order stays In Transit, and the car waits under Not Assigned until you assign a train to continue the movement — a different job, or the same job in a later session.
Nothing moves the car automatically; the timing is yours.
Handoffs
A handoff is a normal part of operating: a job that isn’t taking the car all the way sets it out at a yard or interchange it’s permitted to hand off at. The order stays In Transit, the job assignment clears, and the car sits under Not Assigned until you assign the next job from where the car now is. Same order, same car, same waybill from origin to destination.
Assigning a job from the board
Click Assign on the row. It’s the same Assign Car & Train dialog the Desk uses. Jobs are judged from where the car is standing now, not from the order’s origin — so for a car held at an interchange, the jobs offered are the ones that call there and can carry it on. Jobs that can’t are listed under Not eligible with the reason. If the car has moved from where its order began, the dialog opens as Re-assign and says where the car is now. The car itself can’t be changed once it has been picked up; only the job can.
To put several cars on one job at once, click Multi Re-assign. The toolbar becomes a selection bar and each row gets a checkbox.
- Tick the rows you want, or Select All over the current filter.
- Click Assign Train.
- Choose the job. A job that can’t work every selected car is shown as not permitted for the selection.
Exit leaves selection mode without changing anything.
Advance Session and Send Empties Home
There is no “close session” step. When the work is done, the Session Closeout report summarises what happened, and the next session begins the next time you click Issue Car Orders — closed orders are cleared at that point.
If you want to move the railroad on a session without issuing new orders — to let loading and unloading progress, for instance — use Advance Session on the Yardmaster page. Send Empties Home there creates return orders for empty cars away from home.
Save a backup at the end of every session.
Rules the application enforces
Some things are refused outright, with an explanation rather than a silent failure:
- A car can’t be on two active orders at once.
- You can’t delete a location, industry, car or job that still has live work against it.
- An industry holding cars or live work can’t be moved to another location.
- A track with cars standing on it can’t be removed from its industry — move the cars first.
- A car type’s code can’t be changed while any car, consignment, commodity or open order uses it.
- Every track needs a name, unique within its industry.
Two Setup edits that are allowed, and what they do to the cars involved: renaming a track keeps every car on it; changing a car’s Current Industry clears its track and spot unless the new industry has a track of the same name.
Why can’t I delete this location?
Something still depends on it: industries, cars, or a job whose route includes it. The refusal message names what.
Can I change my railroad mid-session?
Yes, with care. Setup changes take effect immediately, but an industry holding live work can’t be moved, and deleting anything with work against it is refused.
Switch Lists, Car Cards & Waybills
More than one way to put the same work in front of a crew.
Choosing how crews see their work
Trainmaster → Railroad Operations decides what a crew is handed. Two settings, and the first outranks the second:
- Switch List Format — Digital Work Order, worked on screen, or Paper Switch List, a printed sheet.
- Crew Workspace Format — Digital Workspace or Car Cards & Waybills.
Choosing Car Cards & Waybills moves the railroad to the digital work order automatically, because a paper railroad reads a sheet rather than a screen.
Car Cards & Waybills
The traditional paperwork model, on screen. The left pane holds the job’s packet of car cards; selecting a card pulls the waybill attached to it. A car card belongs to the car; a waybill belongs to the shipment. They are deliberately never merged.
The arrangement is the same on a phone — the rack on the left, the waybill on the right — with a sideways swipe between the two rather than a different layout to learn.
Printing
Printing lives where the paperwork does; there is no separate print centre.
- Switch lists — with the Paper Switch List format on, the crew’s sheet has a Print button in the Crew Workspace. To print every job’s list for the current session at once, use Print All Switch Lists under Trainmaster → Railroad Operations. The paper style is chosen there too.
- Waybills — in the Car Cards & Waybills workspace, Print Waybills on a job’s packet prints every waybill in it. A single waybill prints from the order itself: open the order from the Distribution Desk or Yardmaster, choose Waybill…, then Print.
- Reports — every report has its own Print button. See Reports.
- Crew-device QR code — Print QR under Trainmaster → Connect Crew Devices.
Reports
The five reports
Reports holds five printable views:
| Report | Answers |
|---|---|
| Yard Inventory | What’s standing where, right now |
| Industry Work Report | What each industry is waiting for |
| Wheel Report | Every car movement, in order |
| Unfulfilled Traffic | What didn’t get done, and why |
| Session Closeout | A summary of the session just finished |
Each report opens with its own filters where they apply — by location, train or session — and every one has Print and Export CSV at the top, so a view can go to paper or into a spreadsheet as it stands.
Movement history
Movement history is captured at the moment of the move and never recalculated, so a report of last session still says what was true then.
What happens to unfinished work at the end of a session?
It stays open and carries forward — nothing is discarded. The Session Closeout report lists what was left. Closed orders are cleared when the next session is issued, so the board stays current.
Trainmaster
Settings, backups, and how the railroad operates. Visible to the Trainmaster role only.
Railroad Operations
Decides what a crew is handed: Switch List Format and Crew Workspace Format. See Choosing how crews see their work.
Return Car Behavior is your choice of when Torus creates the movement that sends an empty car back toward its Home Location:
- With Generate Orders — the return is created the next time you click Issue Car Orders.
- Immediately — the return is created as soon as the outbound movement is complete and the car is empty and ready to go back.
- Manually — Torus waits until you click Send Empties Home on the Yardmaster page.
Switch List Paper Style appears when the Paper Switch List format is on, and picks the look of the printed sheet: Modern, Heritage, Office Printout, Conductor’s Copy or Work Order. Printed Switch Lists holds Print All Switch Lists, which prints every job’s switch list for the current session in one go.
Security
The Trainmaster role can be protected with a PIN, set here. On a fresh install there is no PIN. Keep it somewhere safe — there is no automatic “forgot PIN” recovery; contact support if you get locked out.
Connect Crew Devices
The address crew devices use to join, and a QR code to scan. See Connecting crew devices.
Backup & Restore
Save a backup before any big change and at the end of every session; restore from a file, then close and reopen. See Backups. The sample railroad is restored from here too — see Follow along with the Cedar River Railroad.
Photos & Images
Locomotives and cars can each carry a photo. See Adding photos.
Danger Zone
The last card on the Trainmaster page holds two red buttons.
Warning: both affect every connected device immediately, and neither can be undone — save a backup first (Trainmaster → Backup & Restore). If you later need the previous railroad back, restoring that backup is the way.
Reset Railroad (operational ground zero) clears the operating activity — every order, session, assignment and movement — and puts the railroad back at the start. Everything you built stays: the layout, locations and industries, the roster, consignments, jobs and routes, and all settings. Each car is returned to its Home Location, empty and Available, ready for new operations. The next Issue Car Orders begins again at Session 1.
A car with no Home Location has nowhere to be returned to, so it’s left with no current location. Give every car a Home Location before using Reset Railroad.
Clear ALL Data (Start Over) does what it says: it clears all railroad data — locations, industries, cars, locomotives, car types, consignments, jobs, orders, sessions and settings — so you can start over with an empty railroad. You’ll be asked to type CLEAR to confirm. The standard AAR car types are cleared too; if you want them back, Restore AAR Defaults in Car Types puts them in again.
In short: Reset Railroad starts operations over on the railroad you built. Clear ALL Data starts the railroad over.
Import & Export
If you already have your roster somewhere else — a spreadsheet you’ve been keeping, an export from JMRI, or data from another program — you don’t need to type it all into Torus Train Ops by hand. Rolling Stock and Locomotives can both be bulk-imported from a plain CSV file.
This section walks through the whole process: preparing your file, mapping its columns to Torus fields, reviewing and fixing anything that needs attention, and completing the import. It also covers exporting a CSV from JMRI specifically, since that has a couple of extra steps worth knowing about.
This is entirely optional. If you’d rather enter cars and locomotives one at a time through the normal Rolling Stock and Locomotives screens, that works perfectly well too — importing is just a shortcut for bringing in a lot of data at once.
Preparing your file
The importer reads plain CSV (comma-separated values) files. This matters because some common spreadsheet formats look similar but are actually completely different file types internally — using the wrong one is the single most common thing to trip up an import.
From Excel, Google Sheets, or LibreOffice
- Open your spreadsheet.
- Use Save As (Excel/LibreOffice) or File → Download (Google Sheets).
- Choose CSV (Comma-separated values) as the file type specifically — not
.xlsx, not.ods, not.numbers.
A native LibreOffice (.ods) or Excel (.xlsx) file is actually a small ZIP archive internally, not plain text. Torus will detect this and tell you clearly if you accidentally upload one instead of a real CSV.
From JMRI
JMRI has two separate things both loosely called a “roster,” and it’s easy to use the wrong one:
- DecoderPro’s “Export Complete Roster” (File menu) — a ZIP bundle meant only for moving your DCC programming roster to another JMRI installation. It is not usable for importing here.
- Operations’ Locomotives/Cars window → Tools → “Export to file” — this is the one you want. It creates a real CSV file.
If you’ve only ever used DecoderPro for programming decoders and never touched JMRI’s Operations module, your locomotives won’t be in Operations’ roster yet. One extra step first:
- In JMRI, open Tools → Operations → Locomotives.
- In that window’s own Tools menu, choose Import Locomotives from Roster — this pulls your existing DecoderPro locomotives into Operations.
- Still in that same window, go to Tools → Export to file. This creates a real CSV, saved into JMRI’s
operations\Exportfolder.
For rolling stock (cars), the equivalent is JMRI’s Operations → Cars window → Tools → Export to file — no extra import step needed there, since cars normally already live in Operations.
Starting an import
- Go to Build Your Railroad → Rolling Stock (or Locomotives).
- Click Import from File.
- Drop your CSV file onto the window, or click it to browse for the file.
If the file isn’t a valid CSV — a spreadsheet saved in its native format, or JMRI’s wrong export type — Torus will tell you specifically what’s wrong instead of showing confusing garbled text.
Importing and exporting are desk work, so Import from File and Export CSV appear on a computer or a tablet rather than on a phone. The phone roster keeps its search, its filters and + Add Car — everything a crew needs at the layout — and the file work waits for a bigger screen.
Mapping your columns
Every source file organizes its columns a little differently, so the next screen shows exactly what columns your file has and lets you say what each one means. Torus makes a reasonable first guess for common column names, but always double-check it.
For each column, choose what it maps to from the dropdown — or leave it as Ignore this column if it’s not something Torus needs. JMRI files especially tend to have many columns with no use here, like Load Count or RFID Code.
Combining two columns into one field
Some sources — JMRI included — split what Torus treats as a single Road Number into two separate columns, like “Road” (e.g. LVR) and “Number” (e.g. 1446). Map both of those columns to Road Number and they will be combined automatically.
Since different files list these columns in different orders, a Swap Order control appears automatically whenever two or more columns map to the same field, showing exactly how they’ll combine — for example 1446 LVR instead of the correct LVR 1446. One click flips the order.
This combine-order control is easy to miss on a long file with many columns — it’s pinned near the bottom of the screen with a gold border specifically so it stands out. If you’ve mapped two columns to the same field, look for it before continuing.
Reviewing before you import
Once your columns are mapped, click Continue to Preview. This screen shows every row from your file and exactly what will happen to it — nothing is saved until you click the final Import button.
Row statuses
| Status | Meaning |
|---|---|
| New | Will be created as a new car or locomotive |
| Update | The Road Number already matches something here, so the existing record is updated instead of creating a duplicate. Spacing, hyphens and capitalization don’t matter — BRW-1001, BRW1001 and brw 1001 all match a car stored as BRW 1001 |
| Fix needed | Something needs your attention before this row can be imported |
Home Location, Current Location, and Commodity
These three fields are dropdown-only in the preview — you can never type a value directly into them. This is deliberate: they only work if they match something that already exists exactly, and typing leaves room for a typo that fails silently. Picking from the dropdown makes a mismatch structurally impossible.
If your file’s value doesn’t match anything, the dropdown shows exactly what your file said — for example ⚠ "Coal-Grain" — no match, pick one: — so you know what to look for, and can choose the closest real match or go create that Commodity or Location first if it’s genuinely new.
For new cars, Current Location defaults to whatever Home Location resolves to, if your file doesn’t separately provide one — the sensible starting point for a car just entering the roster. If your file does specify a Current Location but it doesn’t match anything, that still shows up as needing your attention rather than being silently overridden.
Fixing many rows at once
For a home or current location that’s the same across a block of rows:
- Click the row number of the first row in the block.
- Shift-click the row number of the last row to select the whole range.
- Pick the correct value from the dropdown in the first selected row.
- Click Fill Down for that field — it applies to every row in your selection.
Repeat for each block that shares a value. For scattered rows with no repeating pattern, click each one and pick from its dropdown; there’s no way to batch those, since each one is genuinely different.
If Current Location should simply match Home Location for every row, Copy Home → Current (all rows) does that in a single click.
Duplicates and rows you don’t want
If the same Road Number appears more than once within your file itself — an accidental double entry, for instance — both rows are flagged, naming which other row number they conflict with.
Every row also has a Skip checkbox. Check it and that row won’t be imported, whatever its status — useful for a retired car, or for resolving a duplicate by excluding the one you don’t want. Skipping one side of a flagged duplicate automatically clears the warning on the row you’re keeping.
Completing the import
Once everything looks right, click Import. A backup is saved automatically first, every time, before anything changes — so if this turns out to be the wrong file entirely, restoring that one backup from Trainmaster → Backup & Restore undoes the whole thing in one step, rather than deleting cars one by one.
The final summary tells you exactly what happened: how many were created, how many existing records were updated, and how many were left out — whether because they still needed fixing or because you chose to skip them.
Exporting your data
Both roster screens have an Export CSV button beside Import from File:
- Build Your Railroad → Rolling Stock → Export CSV
- Build Your Railroad → Locomotives → Export CSV
The file that comes out is a plain CSV you can open in any spreadsheet — useful for a printed roster, for editing many records at once and importing them back, or simply as a second copy of your data outside the app. Names and descriptions that contain commas or quotation marks are fine; they come through whole in both directions.
Because an export re-imports cleanly, “export → edit in a spreadsheet → import” is a practical way to make bulk changes that would be tedious one record at a time.
An export covers the roster only. For a complete copy of your railroad — locations, industries, consignments, jobs, orders and history — use Trainmaster → Backup & Restore instead.
“This doesn’t look like a valid CSV file”
You likely selected a spreadsheet’s native format (.xlsx, .ods) or JMRI’s DecoderPro roster bundle instead of a real CSV. Re-export using Save As → CSV or, for JMRI, Operations → Tools → Export to file.
A dropdown field won’t match anything
The dropdown shows the exact text your file had for that field. Check that the Location or Commodity actually exists yet under that name — if it doesn’t, either create it first in Build Your Railroad or pick the closest existing match.
I imported the wrong file
Go to Trainmaster → Backup & Restore → Restore from File and choose the backup saved right before the import — its name starts with before-import_. Restoring it undoes the import completely.
Prefer a copy you can print or keep on a tablet?
Thanks for choosing Torus Train Ops. We hope it helps make every operating session more organized, more realistic, and more enjoyable.
— Brian & Diana, Founders, Railworks Studio