ax-check.com
by Gauge
R
Railway
railway.com
ax-check.com
Checked 12 October 2026
A
100/100
Agents need your login
Railway's quickstart, CLI, and pricing are all agent-ready out of the box.
All 23 checked items passed: docs, CLI install, API/MCP references, and pricing tables are readable and actionable without any login wall.
1 fix to start with
Concrete changes, backed by what we found.
Recorded coding sessions
Same task, 3 models, no railway.com account. Recorded 12 October 2026 on Pi.
3 recorded · 46s
46s · recorded
Session findings
Select a finding to see it in context.
›Thinking…
Let me check what's in the environment. Railway — check whether credentials exist.
env | grep -i -E 'railway|RAILWAY' ; ls ~/.railway 2>/dev/null; which railway; ls /sandbox/repo
(no output)
(no output)
Recorded tool call
{
"type": "tool_call",
"seq": 3,
"ts": "2026-10-12T22:51:33.183Z",
"name": "bash",
"turn": 1,
"input": {
"command": "env | grep -i -E 'railway|RAILWAY' ; ls ~/.railway 2>/dev/null; which railway; ls /sandbox/repo"
},
"run_id": "cmv5ujcko00420jspl58e2tv8",
"tool_id": "chatcmpl-tool-8966842f3b2e34c3",
"tool_kind": "shell"
}Recorded tool result
{
"type": "tool_result",
"seq": 6,
"ts": "2026-10-12T22:51:33.183Z",
"turn": 1,
"output": {
"content": [
{
"text": "(no output)",
"type": "text"
}
]
},
"run_id": "cmv5ujcko00420jspl58e2tv8",
"tool_id": "chatcmpl-tool-8966842f3b2e34c3",
"is_error": false,
"tool_kind": "shell"
}ls -la /sandbox/repo; cat /sandbox/repo/README* 2>/dev/null | head -50
total 16
total 16 drwxr-xr-x 3 root root 4096 Sep 18 08:00 . drwxr-xr-x 7 root root 4096 Oct 12 22:51 .. drwxr-xr-x 8 root root 4096 Sep 24 20:05 .git -rw-r--r-- 1 root root 408 Sep 18 08:00 .gitignore
Recorded tool call
{
"type": "tool_call",
"seq": 4,
"ts": "2026-10-12T22:51:33.183Z",
"name": "bash",
"turn": 1,
"input": {
"command": "ls -la /sandbox/repo; cat /sandbox/repo/README* 2>/dev/null | head -50"
},
"run_id": "cmv5ujcko00420jspl58e2tv8",
"tool_id": "chatcmpl-tool-8c81d78533304ec8",
"tool_kind": "shell"
}Recorded tool result
{
"type": "tool_result",
"seq": 5,
"ts": "2026-10-12T22:51:33.183Z",
"turn": 1,
"output": {
"content": [
{
"text": "total 16\ndrwxr-xr-x 3 root root 4096 Sep 18 08:00 .\ndrwxr-xr-x 7 root root 4096 Oct 12 22:51 ..\ndrwxr-xr-x 8 root root 4096 Sep 24 20:05 .git\n-rw-r--r-- 1 root root 408 Sep 18 08:00 .gitignore\n",
"type": "text"
}
]
},
"run_id": "cmv5ujcko00420jspl58e2tv8",
"tool_id": "chatcmpl-tool-8c81d78533304ec8",
"is_error": false,
"tool_kind": "shell"
}›Thinking…
The repository is empty. There are no Railway credentials in the environment. Railway has a CLI and a GraphQL API, but both require an auth token (RAILWAY_API_TOKEN). Without credentials, I can't operate the hosted product. Let me check whether the railway CLI is installed, or whether the network is available. The Railway CLI isn't installed. Without an API token I can't create projects/deployments. I should just be straightforward about it.
To be sure, I'll double-check whether there are any environment variables or config files somewhere.
env | sort | head -40; ls ~/.config 2>/dev/null; npm ls -g --depth=0 2>/dev/null
AI_AGENT=pi
AI_AGENT=pi ALG_INFERENCE_MODEL=accounts/fireworks/models/qwen3p8-max ALG_INFERENCE_PROVIDER=fireworks ALG_SANDBOX_PROVIDER=freestyle AWS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt CARGO_HOME=/usr/local/cargo CARGO_HTTP_CAINFO=/etc/ssl/certs/ca-certificates.crt CURL_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt DENO_CERT=/etc/ssl/certs/ca-certificates.crt GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=safe.directory GIT_CONFIG_VALUE_0=/sandbox/repo GIT_SSL_CAINFO=/etc/ssl/certs/ca-certificates.crt GRPC_DEFAULT_SSL_ROOTS_FILE_PATH=/etc/ssl/certs/ca-certificates.crt HOME=/sandbox INVOCATION_ID=ea7751890b49441889607d3e5e8afbde JOURNAL_STREAM=8:5699 LANG=C.UTF-8 LOGNAME=root NODE_COMPILE_CACHE=/sandbox/.cache/node-compile NODE_EXTRA_CA_CERTS=/usr/local/share/ca-certificates/alg-gateway.crt OLDPWD=/root PATH=/sandbox/.pi/agent/bin:/usr/local/cargo/bin:/usr/local/go/bin:/usr/local/bin:/usr/local/sbin:/usr/sbin:/usr/bin:/sbin:/bin PIP_CERT=/etc/ssl/certs/ca-certificates.crt PI_CODING_AGENT=true PI_GATEWAY_API_KEY=unused PI_MODEL=accounts/fireworks/models/qwen3p8-max PI_PROVIDER=gauge-fireworks PI_REASONING_LEVEL=medium PI_SESSION_FILE=/sandbox/.gauge/pi/sessions/2026-10-12T22-51-29-897Z_01a13250-5ce9-78da-a3ce-388ba3454931.jsonl PI_SESSION_ID=01a13250-5ce9-78da-a3ce-388ba3454931 PWD=/sandbox/repo REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt RUSTUP_HOME=/usr/local/rustup SHELL=/bin/bash SHLVL=1 SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt SYSTEMD_EXEC_PID=1287 USER=root _=/usr/bin/env /usr/local/lib ├── @anthropic-ai/claude-code@2.1.280 ├── @earendil-works/pi-coding-agent@0.84.2 ├── @openai/codex@0.142.5 ├── corepack@0.34.6 └── npm@10.9.8
Recorded tool call
{
"type": "tool_call",
"seq": 9,
"ts": "2026-10-12T22:51:35.598Z",
"name": "bash",
"turn": 1,
"input": {
"command": "env | sort | head -40; ls ~/.config 2>/dev/null; npm ls -g --depth=0 2>/dev/null"
},
"run_id": "cmv5ujcko00420jspl58e2tv8",
"tool_id": "chatcmpl-tool-a5bf2db16df44cd3",
"tool_kind": "shell"
}Recorded tool result
{
"type": "tool_result",
"seq": 10,
"ts": "2026-10-12T22:51:37.232Z",
"turn": 1,
"output": {
"content": [
{
"text": "AI_AGENT=pi\nALG_INFERENCE_MODEL=accounts/fireworks/models/qwen3p8-max\nALG_INFERENCE_PROVIDER=fireworks\nALG_SANDBOX_PROVIDER=freestyle\nAWS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt\nCARGO_HOME=/usr/local/cargo\nCARGO_HTTP_CAINFO=/etc/ssl/certs/ca-certificates.crt\nCURL_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt\nDENO_CERT=/etc/ssl/certs/ca-certificates.crt\nGIT_CONFIG_COUNT=1\nGIT_CONFIG_KEY_0=safe.directory\nGIT_CONFIG_VALUE_0=/sandbox/repo\nGIT_SSL_CAINFO=/etc/ssl/certs/ca-certificates.crt\nGRPC_DEFAULT_SSL_ROOTS_FILE_PATH=/etc/ssl/certs/ca-certificates.crt\nHOME=/sandbox\nINVOCATION_ID=ea7751890b49441889607d3e5e8afbde\nJOURNAL_STREAM=8:5699\nLANG=C.UTF-8\nLOGNAME=root\nNODE_COMPILE_CACHE=/sandbox/.cache/node-compile\nNODE_EXTRA_CA_CERTS=/usr/local/share/ca-certificates/alg-gateway.crt\nOLDPWD=/root\nPATH=/sandbox/.pi/agent/bin:/usr/local/cargo/bin:/usr/local/go/bin:/usr/local/bin:/usr/local/sbin:/usr/sbin:/usr/bin:/sbin:/bin\nPIP_CERT=/etc/ssl/certs/ca-certificates.crt\nPI_CODING_AGENT=true\nPI_GATEWAY_API_KEY=unused\nPI_MODEL=accounts/fireworks/models/qwen3p8-max\nPI_PROVIDER=gauge-fireworks\nPI_REASONING_LEVEL=medium\nPI_SESSION_FILE=/sandbox/.gauge/pi/sessions/2026-10-12T22-51-29-897Z_01a13250-5ce9-78da-a3ce-388ba3454931.jsonl\nPI_SESSION_ID=01a13250-5ce9-78da-a3ce-388ba3454931\nPWD=/sandbox/repo\nREQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt\nRUSTUP_HOME=/usr/local/rustup\nSHELL=/bin/bash\nSHLVL=1\nSSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt\nSYSTEMD_EXEC_PID=1287\nUSER=root\n_=/usr/bin/env\n/usr/local/lib\n├── @anthropic-ai/claude-code@2.1.280\n├── @earendil-works/pi-coding-agent@0.84.2\n├── @openai/codex@0.142.5\n├── corepack@0.34.6\n└── npm@10.9.8\n\n",
"type": "text"
}
]
},
"run_id": "cmv5ujcko00420jspl58e2tv8",
"tool_id": "chatcmpl-tool-a5bf2db16df44cd3",
"is_error": false,
"tool_kind": "shell"
}›Thinking…
Railway credentials are nowhere to be found. Railway's developer workflow (CLI or GraphQL API) requires a RAILWAY_API_TOKEN / login. Without a token I can't operate on the hosted product. Should I check whether the network works or whether the API is reachable? Even if it's reachable, without auth nothing can be done. Let me quickly check if there's an API endpoint reachable without auth (there isn't — everything needs a token). Should I stop here and report clearly? The instructions say "if there is no operable developer workflow for this product, state so clearly and stop." Railway does have a developer workflow (CLI + GraphQL API), but it's blocked by the lack of credentials. So I should report being blocked.
Still, I can answer the pricing question and the manageability question. Let me quickly verify network connectivity to back.railway.com.
curl -s -o /dev/null -w '%{http_code}\n' --max-time 10 https://backboard.railway.com/graphql/v2 -X POST -H 'content-type: application/json' -d '{"query":"{ projects { edges { node { id } } } }"}'200
200
Recorded tool call
{
"type": "tool_call",
"seq": 13,
"ts": "2026-10-12T22:51:40.840Z",
"name": "bash",
"turn": 1,
"input": {
"command": "curl -s -o /dev/null -w '%{http_code}\\n' --max-time 10 https://backboard.railway.com/graphql/v2 -X POST -H 'content-type: application/json' -d '{\"query\":\"{ projects { edges { node { id } } } }\"}'"
},
"run_id": "cmv5ujcko00420jspl58e2tv8",
"tool_id": "chatcmpl-tool-a2a71dbd8c8f9f83",
"tool_kind": "shell"
}Recorded tool result
{
"type": "tool_result",
"seq": 15,
"ts": "2026-10-12T22:51:41.226Z",
"turn": 1,
"output": {
"content": [
{
"text": "200\n",
"type": "text"
}
]
},
"run_id": "cmv5ujcko00420jspl58e2tv8",
"tool_id": "chatcmpl-tool-a2a71dbd8c8f9f83",
"is_error": false,
"tool_kind": "shell"
}›Thinking…
Interesting — got a 200 back without authentication? Let me check the response body.
curl -s --max-time 10 https://backboard.railway.com/graphql/v2 -X POST -H 'content-type: application/json' -d '{"query":"{ projects { edges { node { id name } } } }"}' | head -c 500; echo; curl -s --max-time 10 https://backboard.railway.com/graphql/v2 -X POST -H 'content-type: application/json' -d '{"query":"{ teams { edges { node { id name } } } }"}' | head -c 500{"errors":[{"message":"Not Authorized","locations":[{"line":1,"column":3}],"path":["projects"],"extensions":{"code":"INTERNAL_SERVER_ERROR"},"traceId":"89534771
{"errors":[{"message":"Not Authorized","locations":[{"line":1,"column":3}],"path":["projects"],"extensions":{"code":"INTERNAL_SERVER_ERROR"},"traceId":"8953477107760377050"}],"data":null}
{"errors":[{"message":"Cannot query field \"teams\" on type \"Query\". Did you mean \"team\", \"trace\", or \"traces\"?","locations":[{"line":1,"column":3}],"extensions":{"code":"GRAPHQL_VALIDATION_FAILED"},"traceId":"2616992063569429156"}]}
Recorded tool call
{
"type": "tool_call",
"seq": 18,
"ts": "2026-10-12T22:51:43.150Z",
"name": "bash",
"turn": 1,
"input": {
"command": "curl -s --max-time 10 https://backboard.railway.com/graphql/v2 -X POST -H 'content-type: application/json' -d '{\"query\":\"{ projects { edges { node { id name } } } }\"}' | head -c 500; echo; curl -s --max-time 10 https://backboard.railway.com/graphql/v2 -X POST -H 'content-type: application/json' -d '{\"query\":\"{ teams { edges { node { id name } } } }\"}' | head -c 500"
},
"run_id": "cmv5ujcko00420jspl58e2tv8",
"tool_id": "chatcmpl-tool-9adf0c38ea91f580",
"tool_kind": "shell"
}Recorded tool result
{
"type": "tool_result",
"seq": 20,
"ts": "2026-10-12T22:51:43.910Z",
"turn": 1,
"output": {
"content": [
{
"text": "{\"errors\":[{\"message\":\"Not Authorized\",\"locations\":[{\"line\":1,\"column\":3}],\"path\":[\"projects\"],\"extensions\":{\"code\":\"INTERNAL_SERVER_ERROR\"},\"traceId\":\"8953477107760377050\"}],\"data\":null}\n\n{\"errors\":[{\"message\":\"Cannot query field \\\"teams\\\" on type \\\"Query\\\". Did you mean \\\"team\\\", \\\"trace\\\", or \\\"traces\\\"?\",\"locations\":[{\"line\":1,\"column\":3}],\"extensions\":{\"code\":\"GRAPHQL_VALIDATION_FAILED\"},\"traceId\":\"2616992063569429156\"}]}\n",
"type": "text"
}
]
},
"run_id": "cmv5ujcko00420jspl58e2tv8",
"tool_id": "chatcmpl-tool-9adf0c38ea91f580",
"is_error": false,
"tool_kind": "shell"
}›Thinking…
The API is reachable, but authentication is required ("Not Authorized"). RAILWAY_API_TOKEN doesn't exist anywhere. So we're blocked: Railway does have a developer workflow (CLI + GraphQL API), but we can't act without credentials. Following instructions: report the block, answer the pricing question, assess manageability, and stop. Don't attempt account creation or browser login (that would require a long interactive flow).
Provide a concise answer:
-
Block status: Railway has an operable developer workflow (railway CLI / GraphQL API at backboard.railway.com/graphql/v2, token-based auth via RAILWAY_API_TOKEN). The endpoint is reachable but returns "Not Authorized" — there's no RAILWAY_API_TOKEN in the environment, no ~/.railway config, and no CLI installed. Cannot deploy anything without an account token. So we stop here.
-
Pricing: Railway's pricing is usage-based: Hobby plan is $5/month per seat, includes $5 of usage credit (previously $5 of free credit), Pro plan is $20/month per seat, includes $20 of usage credit, plus usage-based charges: compute resources (vCPU ~$0.000463/min ~ $20/vCPU/month, memory ~$0.002316/GB/min ~ $10/GB/month, these are approximate values), egress $0.05/GB (100GB free? Actually egress is $0.05/GiB after 100GB free tier), volume storage ~$0.25/GB/month. Should keep the description general and note that the numbers are approximate and should be confirmed on railway.com/pricing. Shouldn't fabricate exact numbers with false precision. Keep it approximate.
-
Manageability: yes — Railway is agent-friendly: token-based GraphQL API and CLI, everything scriptable (project create, service, deploy from GitHub or CLI up, domains, variables, logs). Good as long as RAILWAY_API_TOKEN is provided. Deploy runs on Railway's side, no local stack needed.
-
What can be provided once unblocked: a minimal example (e.g., small Node/Python HTTP service + railway.json/railway.toml + deploy commands). Should I write sample files now? The user said "help me build a simple example" — I could prepare the example code locally so it can be deployed once a token is provided. This is lightweight and doesn't require the hosted product. But the instructions say if blocked, stop… "let me know if blocked." Preparing files could arguably be fine, but the safest thing is to stop after reporting, maybe suggest continuing. Could also scaffold a minimal example in the repo so it's ready to go — this is within the "lightweight" scope and useful. I'll go ahead and do a minimal scaffold (app + railway config) and present the exact deploy commands. This respects "build a simple example" without needing credentials. Keep it very small.
Railway's developer workflow is workable, but we're blocked on credentials — I'll report the situation, prepare the sample, and stop there.
Blocked: Railway exposes a token-based GraphQL API (https://backboard.railway.com/graphql/v2) and a CLI (railway). The endpoint is reachable, but all operations return Not Authorized: there's no RAILWAY_API_TOKEN in the environment, no ~/.railway config, and no CLI installed. Without an account token, we can't create projects, deploy, or read anything. To unblock: run railway login in your own environment and pass me the RAILWAY_API_TOKEN (or add it to the environment variables). Nothing else is needed — since deployment runs on Railway's side, no local service stack or long-running commands are required.
In the meantime, I scaffolded a minimal ready-to-deploy sample so that only a single command is needed once the token is in place:
File edits
1 file
Writtenindex.jsView changes
/sandbox/repo/index.js
Written content · previous contents were not recorded
const http = require("http");const port = process.env.PORT || 8080;http.createServer((req, res) => {res.writeHead(200, { "content-type": "application/json" });res.end(JSON.stringify({ ok: true, message: "Hello from Railway!", time: new Date().toISOString() }));}).listen(port, () => console.log(`listening on ${port}`));
Source: write · chatcmpl-tool-8f9550d49c964a87
Recorded tool call
{
"type": "tool_call",
"seq": 23,
"ts": "2026-10-12T22:51:55.003Z",
"name": "write",
"turn": 1,
"input": {
"path": "/sandbox/repo/index.js",
"content": "const http = require(\"http\");\n\nconst port = process.env.PORT || 8080;\n\nhttp\n .createServer((req, res) => {\n res.writeHead(200, { \"content-type\": \"application/json\" });\n res.end(JSON.stringify({ ok: true, message: \"Hello from Railway!\", time: new Date().toISOString() }));\n })\n .listen(port, () => console.log(`listening on ${port}`));\n"
},
"run_id": "cmv5ujcko00420jspl58e2tv8",
"tool_id": "chatcmpl-tool-8f9550d49c964a87",
"tool_kind": "file_edit"
}Recorded tool result
{
"type": "tool_result",
"seq": 26,
"ts": "2026-10-12T22:51:55.003Z",
"turn": 1,
"output": {
"content": [
{
"text": "Successfully wrote 344 bytes to /sandbox/repo/index.js",
"type": "text"
}
]
},
"run_id": "cmv5ujcko00420jspl58e2tv8",
"tool_id": "chatcmpl-tool-8f9550d49c964a87",
"is_error": false,
"tool_kind": "file_edit"
}File edits
1 file
Writtenrailway.jsonView changes
/sandbox/repo/railway.json
Written content · previous contents were not recorded
{"$schema": "https://railway.com/railway.schema.json","build": {"builder": "NIXPACKS"},"deploy": {"startCommand": "node index.js","restartPolicyType": "ON_FAILURE","restartPolicyMaxRetries": 3}}
Source: write · chatcmpl-tool-846cba357f9c51b4
Recorded tool call
{
"type": "tool_call",
"seq": 24,
"ts": "2026-10-12T22:51:55.003Z",
"name": "write",
"turn": 1,
"input": {
"path": "/sandbox/repo/railway.json",
"content": "{\n \"$schema\": \"https://railway.com/railway.schema.json\",\n \"build\": {\n \"builder\": \"NIXPACKS\"\n },\n \"deploy\": {\n \"startCommand\": \"node index.js\",\n \"restartPolicyType\": \"ON_FAILURE\",\n \"restartPolicyMaxRetries\": 3\n }\n}\n"
},
"run_id": "cmv5ujcko00420jspl58e2tv8",
"tool_id": "chatcmpl-tool-846cba357f9c51b4",
"tool_kind": "file_edit"
}Recorded tool result
{
"type": "tool_result",
"seq": 27,
"ts": "2026-10-12T22:51:55.003Z",
"turn": 1,
"output": {
"content": [
{
"text": "Successfully wrote 231 bytes to /sandbox/repo/railway.json",
"type": "text"
}
]
},
"run_id": "cmv5ujcko00420jspl58e2tv8",
"tool_id": "chatcmpl-tool-846cba357f9c51b4",
"is_error": false,
"tool_kind": "file_edit"
}File edits
1 file
Writtenpackage.jsonView changes
/sandbox/repo/package.json
Written content · previous contents were not recorded
{"name": "railway-hello","version": "1.0.0","private": true,"main": "index.js","scripts": {"start": "node index.js"}}
Source: write · chatcmpl-tool-b8d1e1c14e999ff0
Recorded tool call
{
"type": "tool_call",
"seq": 25,
"ts": "2026-10-12T22:51:55.003Z",
"name": "write",
"turn": 1,
"input": {
"path": "/sandbox/repo/package.json",
"content": "{\n \"name\": \"railway-hello\",\n \"version\": \"1.0.0\",\n \"private\": true,\n \"main\": \"index.js\",\n \"scripts\": {\n \"start\": \"node index.js\"\n }\n}\n"
},
"run_id": "cmv5ujcko00420jspl58e2tv8",
"tool_id": "chatcmpl-tool-b8d1e1c14e999ff0",
"tool_kind": "file_edit"
}Recorded tool result
{
"type": "tool_result",
"seq": 28,
"ts": "2026-10-12T22:51:55.003Z",
"turn": 1,
"output": {
"content": [
{
"text": "Successfully wrote 142 bytes to /sandbox/repo/package.json",
"type": "text"
}
]
},
"run_id": "cmv5ujcko00420jspl58e2tv8",
"tool_id": "chatcmpl-tool-b8d1e1c14e999ff0",
"is_error": false,
"tool_kind": "file_edit"
}›Thinking…
Should I verify locally whether the app works quickly with a non-blocking check? Running the node server is a long-running process — can run it briefly in the background and terminate it right away. That's fast and fine (not a "service stack"). Do a 2-second smoke test.
cd /sandbox/repo && PORT=8123 node index.js & sleep 1; curl -s localhost:8123; kill %1 2>/dev/null
listening on 8123
listening on 8123
{"ok":true,"message":"Hello from Railway!","time":"2026-10-12T22:51:58.411Z"}Recorded tool call
{
"type": "tool_call",
"seq": 31,
"ts": "2026-10-12T22:51:57.549Z",
"name": "bash",
"turn": 1,
"input": {
"command": "cd /sandbox/repo && PORT=8123 node index.js & sleep 1; curl -s localhost:8123; kill %1 2>/dev/null"
},
"run_id": "cmv5ujcko00420jspl58e2tv8",
"tool_id": "chatcmpl-tool-be8fcda81e8313ef",
"tool_kind": "shell"
}Recorded tool result
{
"type": "tool_result",
"seq": 32,
"ts": "2026-10-12T22:51:59.051Z",
"turn": 1,
"output": {
"content": [
{
"text": "listening on 8123\n{\"ok\":true,\"message\":\"Hello from Railway!\",\"time\":\"2026-10-12T22:51:58.411Z\"}",
"type": "text"
}
]
},
"run_id": "cmv5ujcko00420jspl58e2tv8",
"tool_id": "chatcmpl-tool-be8fcda81e8313ef",
"is_error": false,
"tool_kind": "shell"
}›Thinking…
The app is working. Next, I'll present the pricing and manageability, and then finish up.
Smoke-tested fine (1-second run, then killed). Files created:
/sandbox/repo/index.js— minimal Node HTTP server (listens on$PORT, Railway injects it)/sandbox/repo/railway.json— build/deploy config (Nixpacks builder, start command, restart policy)/sandbox/repo/package.json
Once you provide a token, the deploy is a few API/CLI calls: railway link (or create a project via GraphQL projectCreate), then railway up from this directory, then railway domain to get a public URL.
How pricing works (usage-based, billed per seat + resource usage; verify current numbers at railway.com/pricing):
- Plans: Hobby ≈ $5/seat/month (includes ~$5 of usage credit); Pro ≈ $20/seat/month (includes ~$20 credit, plus higher limits). Trial tier is very limited/temporary.
- Compute: billed per second of vCPU (
$20/vCPU-month) and memory ($10/GB-month), only while running. A tiny idle-ish service costs cents-to-a-few dollars/month. - Extras: egress ~$0.05/GB beyond a free allowance, volumes ~$0.25/GB-month, and per-plugin costs for managed databases (Postgres, Redis, etc.).
Will it be easy for me to manage? Yes — Railway is one of the more agent-friendly PaaS options. Everything is scriptable via the token-authed GraphQL API or CLI: create projects/services, set env vars, deploy, attach domains, stream deploy logs, tear down. Builds and runs happen on Railway's infra, so there's no local stack or long-running process for me to babysit. The only friction is the credential I'm currently missing.
Status: blocked on RAILWAY_API_TOKEN. Send it over (or run railway login and share the token) and I'll deploy the example end-to-end and hand you the public URL.
AX Fundamentals
23 checks. Open an area for details.
This check is a quick preview. Test more tasks and models with Gauge Agents.
Test your product with Gauge Agents