This week, working with files and shells on Railway gets a lot more powerful. Volumes get full file management from the CLI with an interactive TUI browser for navigating, editing, and transferring files over SFTP. A volume browser has been one of the most requested features on Central Station, and it's possible thanks to our recent move to standard SSH (the browser uses SFTP under the hood). In the dashboard, every service now has an in-browser shell paired with a live file browser, and buckets get a file browser of their own.
Let's get into it! 🚄
Manage volumes from the CLI
Browse, edit, and transfer volume files from the terminalrailway volume files brings full file management to volumes from the command line, with operations for listing, uploading, downloading, deleting, and renaming remote files and directories. Recursive directory transfers come with progress reporting and configurable concurrency, and every command supports --json output for use in scripts and agent workflows.
Run railway volume browse to open an interactive TUI for navigating volume contents. The browser caches directories, prefetches in the background, preserves your cursor between hops, shows file sizes, confirms before destructive operations, and lets you open a file in your editor and save changes back without leaving the terminal.
Before, looking inside a volume meant SSHing into a service and poking around with shell tools. The new commands talk to the volume directly over SFTP, so there's no running service container in the loop, and they work cleanly inside agent loops where opening a TTY isn't an option.
Massive thanks to community member Thalles Passos for contributing this work. Update your CLI with railway update and let us know what you think on Central Station.
In-browser shell to Priority Boarding
Service console with live file browser belowNew in Priority Boarding: In-browser shell with file browser
Every service in the dashboard now has a Console tab with a connected shell on top and a live file browser below, both scoped to the service's filesystem. Run commands, navigate directories, and upload or download files without leaving the dashboard or reaching for an SSH client.
A few touches worth calling out:
- Modifying a file in the shell refreshes the file browser below automatically, so a
touchormvshows up right away. - Multi-replica services get a replica picker in the top-left of the Console tab, so you can connect to a specific instance.
- The file row menu in the browser includes Copy path to console, which drops the full path into the prompt for you.
Before, working with a service's filesystem from the dashboard meant looking at logs or opening a separate terminal to SSH in. Both views now live in a single tab.
Enable the feature flag on the feature flags page and let us know what you think in this Central Station thread.
File browser for buckets
Bucket file browser with foldersBuckets have a Files tab in the dashboard now. Open any bucket, head to the Files tab, and you can browse contents, navigate folders, upload files, and create new directories directly. Folder hierarchies and last-modified dates render inline.
Before, inspecting a bucket's contents from Railway meant pointing an S3-compatible client at the bucket's credentials. Now it works from the dashboard the same way as any cloud storage console.
Let us know what you think on Central Station.
Fixes and improvements
- We improved the Railway agent skills to recognize both CLI-based MCP and Remote MCP configurations, switching between tool calls and CLI calls based on what you have set up. The skills now also handle duplicate-service cases more cleanly and guide deployments to find dependency services that may need to ship alongside your application. Update your agent configuration with
railway setup agents -y, or reinstall the skills directly withrailway skills install. - We fixed silent error swallowing in the Database tab's SQL query panel. Postgres errors (syntax issues, permission denied, missing tables) now surface in a red toast with the actual error message. Previously, failed queries showed a "Query ran successfully" toast and an empty result table, with the real error lost.