neuron-explorer
Steering-first neuron explorer for Qwen3.5-4B: push every MLP neuron, keep every rollout, browse the results
翻译准备中
一键在 Railway 部署并托管 OpenCode — 永久运行的服务器,内置数据库,GitHub 自动部署。持久的、密码保护的 OpenCode 2 服务器,带网页 UI 和 API。
AI 翻译
Deploy and host OpenCode on Railway in one click — always-on servers, built-in databases, and GitHub auto-deploys. Persistent, password-protected OpenCode 2 server with a web UI and API.
开发工具Shell · DockerfileGitHub @joeychilson在线运营者未确认
试用过了吗? 点一下就好,无需登录。
Railway 模板,用于持久的、密码保护的 OpenCode 服务器。
AI 翻译
Railway template for a persistent, password-protected OpenCode server.
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
A Railway template for a persistent, password-protected
OpenCode 2 server with a web UI, an API, developer
tools, agent skills, and browser automation.
The template creates one opencode service with:查看完整 README ↗A Railway template for a persistent, password-protected OpenCode 2 server with a web UI, an API, developer tools, agent skills, and browser automation.
The template creates one opencode service with:
ghcr.io/joeychilson/railway-opencode image for amd64 and arm64.OPENCODE_PASSWORD./var/lib/opencode for the workspace, sessions, and credentials.4096.Add at least one model provider key, such as ANTHROPIC_API_KEY, or sign in to
a provider from the web UI after deploying. The server refuses to start without
a password.
To deploy the image without the template, use
ghcr.io/joeychilson/railway-opencode:<version>, attach a volume at
/var/lib/opencode, set OPENCODE_PASSWORD, and attach a public domain to
port 4096.
Open the Railway domain in a browser and sign in with the password.
Remote clients need OpenCode 2 on your machine. Open the TUI against the server:
OPENCODE_PASSWORD=your-password opencode --server https://your-app.up.railway.app
Run a one-shot prompt:
OPENCODE_PASSWORD=your-password \
opencode run --server https://your-app.up.railway.app "fix the failing tests"
Connect with the TypeScript client:
import { OpenCode } from "@opencode/client"
const client = OpenCode.make({
baseUrl: "https://your-app.up.railway.app",
headers: { authorization: `Basic ${btoa("opencode:your-password")}` },
})
The API is under /api and uses HTTP basic auth with the username opencode.
The OpenAPI document is at /openapi.json, and server-sent events are at
/api/event. The web UI itself loads without a password and then asks for one.
| Variable | Default | Purpose |
|---|---|---|
OPENCODE_PASSWORD | Generated | Password for the web UI, API, and remote clients. OPENCODE_SERVER_PASSWORD also works. |
GIT_USER_NAME | None | Name on Git commits |
GIT_USER_EMAIL | None | Email on Git commits |
GITHUB_TOKEN or GH_TOKEN | None | Signs in the GitHub CLI and Git over HTTPS |
RAILWAY_API_TOKEN | None | Signs in the Railway CLI |
OPENCODE_CONFIG_CONTENT | None | JSON merged into the OpenCode configuration |
OPENCODE_HOSTNAME | :: | Listen address; :: covers IPv4 and IPv6 |
PORT | 4096 | Server port |
OpenCode reads provider keys from the environment, including
ANTHROPIC_API_KEY, OPENAI_API_KEY, OPENROUTER_API_KEY, GOOGLE_API_KEY,
XAI_API_KEY, GROQ_API_KEY, MISTRAL_API_KEY, and DEEPSEEK_API_KEY.
Credentials you add in OpenCode, including provider sign-ins, are stored on the
volume.
The baked configuration turns off session sharing and self-updates. Extend it
with OPENCODE_CONFIG_CONTENT or an opencode.json in a project.
The volume at /var/lib/opencode is also the home directory. It holds:
workspace/.The OpenCode binary, the baked skills and configuration, Chromium, and system packages live in the image. When the image changes, the entrypoint refreshes the image-managed files on the volume and leaves your files and OpenCode state alone.
Install more tools and skills without root:
mise use <tool>@<version>
npx skills add <package> -a opencode -y
Keep Serverless sleeping off, because sleeping interrupts running sessions. A redeploy has a short outage, since one volume can't be mounted in two containers at once.
For access only from services in the same project, remove the public domain
and connect to http://opencode.railway.internal:4096.
Each release is published as ghcr.io/joeychilson/railway-opencode:X.Y.Z and
moves the X.Y tag to it. The Railway template deploys X.Y with patch
auto-updates on, so a deployment that keeps that setting picks up patch releases
in Railway's nightly update window. A minor or major release starts a new X.Y
tag, and its release notes say what to change before you move to it. Workspace
files, sessions, and credentials stay on the volume across updates.
Renovate bumps OpenCode when a new release is 2 days old. The bump merges after the smoke test passes on amd64 and arm64, and the merge publishes a patch release. New OpenCode majors and new Node.js or Python lines wait for review, and a new runtime line releases as a major. The release policy for all of these templates is in railway-templates.
Version 4.0 moves the default Node.js from 24 to 26 and Python from 3.13 to
3.15. Change the image to ghcr.io/joeychilson/railway-opencode:4.0.
Node.js 24 and Python 3.13 stay installed on the volume, so existing virtual
environments keep working. Global npm packages and Python packages installed
outside a virtual environment stay with the old versions, so reinstall them.
To keep a project on the old versions, run mise use node@24 [email protected] in
its directory.
Versions 2.x run OpenCode 1. Version 3.0 moves to OpenCode 2, which changes the clients and the API:
ghcr.io/joeychilson/railway-opencode:3.0 and set the
healthcheck path to /.OPENCODE_SERVER_PASSWORD to OPENCODE_PASSWORD. The old name
still works.OPENCODE_SERVER_USERNAME and OPENCODE_ALLOW_UNAUTHENTICATED. The
username is always opencode, and a password is always required.opencode attach URL is now
opencode --server URL, and /doc moved to /openapi.json.docker build -t railway-opencode:test .
./test/smoke-test.sh railway-opencode:test
The smoke test boots the image on an empty volume and checks the password guard, API authentication, the web UI, the tools and skills, the seeded workspace, volume ownership, and persistence across a container replacement. To run the image yourself:
docker run --rm -e OPENCODE_PASSWORD=test -p 4096:4096 railway-opencode:test