---
title: "Deploy OpenCode 2 (web + phone)"
description: "Always-on OpenCode 2 for your browser and phone, with git and GitHub ready."
category: "AI/ML"
url: https://railway.com/deploy/opencode-2-web-phone
---

# Deploy OpenCode 2 (web + phone)

Always-on OpenCode 2 for your browser and phone, with git and GitHub ready.

**[Deploy OpenCode 2 (web + phone) on Railway](https://railway.com/template/opencode-2-web-phone)**

Machine-readable deploy manifest (JSON, validated by TemplateCI): https://railway.com/deploy/opencode-2-web-phone/manifest.json

- **Creator:** AvgSoft
- **Category:** AI/ML

## Template content

### OpenCode https://cdn.jsdelivr.net/gh/mikedepo/railway-template-assets@6d43a901b61fb5eedf5d81572f71c1bbaae20be4/service-icons/opencode.svg

- **Image:** ghcr.io/anomalyco/opencode:2.2.4
- **Start command:** `/bin/sh -c "echo IyEvYmluL3NoCiMgU3RhcnQgT3BlbkNvZGUgMiBvbiBSYWlsd2F5IGZyb20gdGhlIG9mZmljaWFsIGltYWdlIChBbHBpbmUsIHJ1bnMgYXMgcm9vdCkuCiMgVGhlIHZvbHVtZSBpcyByb290J3MgaG9tZSwgc28gc2lnbi1pbnMsIHNlc3Npb25zLCBjb25maWcgYW5kIHRoZSB3b3Jrc3BhY2Ugc3Vydml2ZSByZWRlcGxveXMuCiMgVGhlIHRlbXBsYXRlJ3Mgc3RhcnQgY29tbWFuZCBpcyB0aGlzIGZpbGUgYmFzZTY0LWVuY29kZWQgKGJ1aWxkLXN0YXJ0LWNvbW1hbmQubWpzIHByaW50cyBpdCkuCgpIPS9yb290CldTPSRIL3dvcmtzcGFjZQpTVEFURT0kSC8ubG9jYWwvc3RhdGUvcmFpbHdheS1zZXR1cApBUEtfQ0FDSEU9JEgvLmNhY2hlL2FwawpQQUNLQUdFUz0idGluaSBnaXQgZ2l0aHViLWNsaSBvcGVuc3NoLWNsaWVudC1kZWZhdWx0IGJhc2ggY3VybCIKCmxvZygpIHsgZWNobyAiW3NldHVwXSAkKiI7IH0KCiMgVGhlIHNlcnZlciBpcyBwdWJsaWMgYW5kIHJ1bnMgY29tbWFuZHMsIHNvIGl0IG5ldmVyIHN0YXJ0cyB3aXRob3V0IGEgcmVhbCBwYXNzd29yZC4KaWYgWyAteiAiJE9QRU5DT0RFX1BBU1NXT1JEIiBdOyB0aGVuCiAgbG9nICJPUEVOQ09ERV9QQVNTV09SRCBpcyBlbXB0eS4gU2V0IGl0IGluIHRoZSBzZXJ2aWNlJ3MgVmFyaWFibGVzIGFuZCByZWRlcGxveTsgT3BlbkNvZGUgd2lsbCBub3Qgc3RhcnQgd2l0aG91dCBpdC4iCiAgZXhpdCAxCmZpCmlmIFsgIiR7I09QRU5DT0RFX1BBU1NXT1JEfSIgLWx0IDggXTsgdGhlbgogIGxvZyAiT1BFTkNPREVfUEFTU1dPUkQgaXMgc2hvcnRlciB0aGFuIDggY2hhcmFjdGVycy4gQ2hvb3NlIGEgbG9uZ2VyIG9uZSBhbmQgcmVkZXBsb3kuIgogIGV4aXQgMQpmaQp1bnNldCBPUEVOQ09ERV9TRVJWRVJfUEFTU1dPUkQKCiMgUmFpbHdheSBsZWF2ZXMgYW4gZW1wdHkgb3B0aW9uYWwgZmllbGQgb3V0LCBidXQgYW4gZW1wdHkgdmFsdWUgY2FuIHN0aWxsIGFycml2ZTsgZHJvcCBpdCBzbyBubyB0b29sIHJlYWRzIGl0IGFzIGEga2V5Lgpmb3IgdiBpbiBBTlRIUk9QSUNfQVBJX0tFWSBPUEVOQUlfQVBJX0tFWSBPUEVOUk9VVEVSX0FQSV9LRVkgR0lUSFVCX1RPS0VOIEdIX1RPS0VOIEdJVF9SRVBPIEdJVF9VU0VSX05BTUUgR0lUX1VTRVJfRU1BSUwgRVhUUkFfUEFDS0FHRVM7IGRvCiAgZXZhbCAiWyAtbiBcIlwkJHZcIiBdIHx8IHVuc2V0ICR2Igpkb25lCiMgT3BlbkNvZGUgcmVhZHMgR0lUSFVCX1RPS0VOIGFzIGEgR2l0SHViIENvcGlsb3Qgc2lnbi1pbiBhbmQgdGhlbiBtYWtlcyBhIENvcGlsb3QgbW9kZWwgdGhlIGRlZmF1bHQsIHdoaWNoIGZhaWxzIGZvciBhCiMgdG9rZW4gd2l0aG91dCBDb3BpbG90IGFjY2Vzcy4gZ2ggcmVhZHMgR0hfVE9LRU4sIHdoaWNoIG5vIG1vZGVsIHByb3ZpZGVyIHVzZXMsIHNvIGhhbmQgdGhlIHRva2VuIG92ZXIgdW5kZXIgdGhhdCBuYW1lLgpbIC1uICIkR0lUSFVCX1RPS0VOIiBdICYmIGV4cG9ydCBHSF9UT0tFTj0iJHtHSF9UT0tFTjotJEdJVEhVQl9UT0tFTn0iCnVuc2V0IEdJVEhVQl9UT0tFTgoKcm1kaXIgIiRIL2xvc3QrZm91bmQiIDI+L2Rldi9udWxsCm1rZGlyIC1wICIkV1MiICIkU1RBVEUiICIkQVBLX0NBQ0hFIgoKIyBUaGUgaW1hZ2Ugc2hpcHMgb25seSBPcGVuQ29kZSBhbmQgcmlwZ3JlcC4gSW5zdGFsbCB0aGUgdG9vbHMgZXZlcnkgc3RhcnQgKHRoZSByb290IGZpbGVzeXN0ZW0gaXMgbmV3IGVhY2ggZGVwbG95KTsKIyBwYWNrYWdlcyBhcmUgY2FjaGVkIG9uIHRoZSB2b2x1bWUsIHNvIGEgc3RhcnQgd2l0aG91dCBuZXR3b3JrIHN0aWxsIGdldHMgdGhlbS4KYXBrX2FkZCgpIHsKICBPVVQ9JChhcGsgYWRkIC0tcXVpZXQgLS1uby1wcm9ncmVzcyAtLWNhY2hlLWRpciAiJEFQS19DQUNIRSIgIiRAIiAyPiYxKSB8fAogICAgT1VUPSQoYXBrIGFkZCAtLXF1aWV0IC0tbm8tcHJvZ3Jlc3MgLS1uby1uZXR3b3JrIC0tY2FjaGUtZGlyICIkQVBLX0NBQ0hFIiAiJEAiIDI+JjEpIHx8IHsKICAgICAgZWNobyAiJE9VVCIgfCB0YWlsIC1uIDUKICAgICAgcmV0dXJuIDEKICAgIH0KfQppZiBhcGtfYWRkICRQQUNLQUdFUzsgdGhlbgogIGxvZyAidG9vbHMgcmVhZHk6ICQoZ2l0IC0tdmVyc2lvbiksIGdoICQoZ2ggLS12ZXJzaW9uIHwgaGVhZCAtbiAxIHwgY3V0IC1kJyAnIC1mMyksIGJhc2gsIGN1cmwiCmVsc2UKICBsb2cgImNvdWxkIG5vdCBpbnN0YWxsIGdpdCwgZ2ggYW5kIHRpbmk7IE9wZW5Db2RlIHN0YXJ0cyB3aXRob3V0IHRoZW0gYW5kIHRoZSBuZXh0IHN0YXJ0IHRyaWVzIGFnYWluIgpmaQppZiBbIC1uICIkRVhUUkFfUEFDS0FHRVMiIF07IHRoZW4KICBhcGtfYWRkICRFWFRSQV9QQUNLQUdFUyAmJiBsb2cgImV4dHJhIHBhY2thZ2VzIHJlYWR5OiAkRVhUUkFfUEFDS0FHRVMiIHx8CiAgICBsb2cgImNvdWxkIG5vdCBpbnN0YWxsIEVYVFJBX1BBQ0tBR0VTICgkRVhUUkFfUEFDS0FHRVMpOyBjaGVjayB0aGUgbmFtZXMgYXQgcGtncy5hbHBpbmVsaW51eC5vcmciCmZpCgppZiBjb21tYW5kIC12IGdpdCA+L2Rldi9udWxsOyB0aGVuCiAgWyAtbiAiJChnaXQgY29uZmlnIC0tZ2xvYmFsIGluaXQuZGVmYXVsdEJyYW5jaCkiIF0gfHwgZ2l0IGNvbmZpZyAtLWdsb2JhbCBpbml0LmRlZmF1bHRCcmFuY2ggbWFpbgogIFsgLW4gIiRHSVRfVVNFUl9OQU1FIiBdICYmIGdpdCBjb25maWcgLS1nbG9iYWwgdXNlci5uYW1lICIkR0lUX1VTRVJfTkFNRSIKICBbIC1uICIkR0lUX1VTRVJfRU1BSUwiIF0gJiYgZ2l0IGNvbmZpZyAtLWdsb2JhbCB1c2VyLmVtYWlsICIkR0lUX1VTRVJfRU1BSUwiCgogICMgR2l0SHViOiBnaCByZWFkcyBHSF9UT0tFTiBmcm9tIHRoZSBlbnZpcm9ubWVudCwgYW5kIGdpdCBhc2tzIGdoIGZvciBjcmVkZW50aWFscyBvbiBnaXRodWIuY29tLgogIGlmIFsgLW4gIiRHSF9UT0tFTiIgXSAmJiBjb21tYW5kIC12IGdoID4vZGV2L251bGw7IHRoZW4KICAgIGdoIGF1dGggc2V0dXAtZ2l0IC0taG9zdG5hbWUgZ2l0aHViLmNvbSA+L2Rldi9udWxsIDI+JjEgfHwKICAgICAgZ2l0IGNvbmZpZyAtLWdsb2JhbCBjcmVkZW50aWFsLmh0dHBzOi8vZ2l0aHViLmNvbS5oZWxwZXIgJyEvdXNyL2Jpbi9naCBhdXRoIGdpdC1jcmVkZW50aWFsJwogICAgbG9nICJHaXRIdWIgc2lnbi1pbiBmb3IgZ2l0IGFuZCBnaDogZnJvbSBHSVRIVUJfVE9LRU4iCiAgICAjIENvbW1pdCBhcyB0aGUgdG9rZW4ncyBHaXRIdWIgdXNlciAod2l0aCBHaXRIdWIncyBwcml2YXRlIG5vcmVwbHkgYWRkcmVzcykgdW5sZXNzIGEgbmFtZSBhbmQgZW1haWwgYXJlIHNldC4KICAgIGlmIFsgLXogIiQoZ2l0IGNvbmZpZyAtLWdsb2JhbCB1c2VyLmVtYWlsKSIgXTsgdGhlbgogICAgICBpZiBNRT0kKHRpbWVvdXQgMjAgZ2ggYXBpIHVzZXIgLS1qcSAnWy5pZCwgLmxvZ2luLCAoLm5hbWUgLy8gIiIpXSB8IEB0c3YnIDI+L2Rldi9udWxsKSAmJiBbIC1uICIkTUUiIF07IHRoZW4KICAgICAgICBJRD0kKGVjaG8gIiRNRSIgfCBjdXQgLWYxKQogICAgICAgIExPR0lOPSQoZWNobyAiJE1FIiB8IGN1dCAtZjIpCiAgICAgICAgTkFNRT0kKGVjaG8gIiRNRSIgfCBjdXQgLWYzKQogICAgICAgIGdpdCBjb25maWcgLS1nbG9iYWwgdXNlci5uYW1lICIke05BTUU6LSRMT0dJTn0iCiAgICAgICAgZ2l0IGNvbmZpZyAtLWdsb2JhbCB1c2VyLmVtYWlsICIkSUQrJExPR0lOQHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNvbSIKICAgICAgICBsb2cgImdpdCBjb21taXRzIGFzICR7TkFNRTotJExPR0lOfSAoR2l0SHViIHVzZXIgJExPR0lOKSIKICAgICAgZWxzZQogICAgICAgIGxvZyAiR2l0SHViIGRpZCBub3QgYWNjZXB0IEdJVEhVQl9UT0tFTjsgcmVwbGFjZSBpdCBpbiB0aGUgc2VydmljZSdzIFZhcmlhYmxlcyAoZ2l0IGFuZCBnaCBuZWVkIGEgdmFsaWQgdG9rZW4gZm9yIHByaXZhdGUgcmVwb3MpIgogICAgICBmaQogICAgZmkKICBmaQpmaQoKIyBGaXJzdCBib290LCBpbiB0aGUgYmFja2dyb3VuZCBzbyBPcGVuQ29kZSBzdGFydHMgYXQgb25jZToKIyAtIGNsb25lIEdJVF9SRVBPIChvd25lci9uYW1lIG9yIGEgZ2l0IFVSTCkgaW50byB0aGUgd29ya3NwYWNlOyBhIGZhaWxlZCBjbG9uZSBpcyByZXRyaWVkIGF0IHRoZSBuZXh0IHN0YXJ0LgojIC0gYSBicm93c2VyIHRoYXQgaGFzIG5ldmVyIHVzZWQgdGhpcyBzZXJ2ZXIgaGFzIG5vIHByb2plY3QsIHNvIGl0cyBOZXcgc2Vzc2lvbiBidXR0b24gZG9lcyBub3RoaW5nLiBPbmUgc2Vzc2lvbgojICAgaW4gdGhlIHdvcmtzcGFjZSAob3IgdGhlIGNsb25lZCByZXBvKSBnaXZlcyB0aGUgZmlyc3QgdmlzaXQgc29tZXRoaW5nIHRvIG9wZW47IGNyZWF0ZWQgb25jZSBwZXIgdm9sdW1lLgpjbG9uZV9yZXBvKCkgewogIGNhc2UgIiRHSVRfUkVQTyIgaW4KICAgICo6Ly8qIHwgZ2l0QCopIFVSTD0kR0lUX1JFUE8gOzsKICAgICovKikgVVJMPSJodHRwczovL2dpdGh1Yi5jb20vJEdJVF9SRVBPLmdpdCIgOzsKICAgICopIFVSTD0gOzsKICBlc2FjCiAgTkFNRT0kKGJhc2VuYW1lICIkR0lUX1JFUE8iIC5naXQpCiAgaWYgWyAteiAiJFVSTCIgXSB8fCBbIC16ICIkTkFNRSIgXTsgdGhlbgogICAgbG9nICJHSVRfUkVQTyBzaG91bGQgbG9vayBsaWtlIG93bmVyL25hbWUgb3IgaHR0cHM6Ly9naXRodWIuY29tL293bmVyL25hbWU7IG5vdGhpbmcgY2xvbmVkIgogICAgcmV0dXJuIDEKICBmaQogIFJFUE9fRElSPSRXUy8kTkFNRQogIFsgLWQgIiRSRVBPX0RJUiIgXSAmJiByZXR1cm4gMAogIHJtIC1yZiAiJFJFUE9fRElSLnBhcnRpYWwiCiAgaWYgR0lUX1RFUk1JTkFMX1BST01QVD0wIGdpdCBjbG9uZSAtLXF1aWV0ICIkVVJMIiAiJFJFUE9fRElSLnBhcnRpYWwiIDI+JjEgJiYgbXYgIiRSRVBPX0RJUi5wYXJ0aWFsIiAiJFJFUE9fRElSIjsgdGhlbgogICAgbG9nICJjbG9uZWQgJEdJVF9SRVBPIGludG8gJFJFUE9fRElSIgogIGVsc2UKICAgIHJtIC1yZiAiJFJFUE9fRElSLnBhcnRpYWwiCiAgICBsb2cgImNvdWxkIG5vdCBjbG9uZSAkR0lUX1JFUE87IGNoZWNrIHRoZSBuYW1lIGFuZCBHSVRIVUJfVE9LRU4sIHRoZW4gcmVkZXBsb3kiCiAgICByZXR1cm4gMQogIGZpCn0Kc3RhcnRfc2Vzc2lvbigpIHsKICBbIC1lICIkU1RBVEUvc3RhcnQtc2Vzc2lvbiIgXSAmJiByZXR1cm4gMAogIEFQST0iaHR0cDovLzEyNy4wLjAuMToke1BPUlQ6LTQwOTZ9L2FwaS9zZXNzaW9uIgogIGk9MAogIHdoaWxlIFsgJGkgLWx0IDEyMCBdOyBkbwogICAgWyAiJChjdXJsIC1zIC1vIC9kZXYvbnVsbCAtdyAnJXtodHRwX2NvZGV9JyAtdSAib3BlbmNvZGU6JE9QRU5DT0RFX1BBU1NXT1JEIiAiJEFQSSIpIiA9IDIwMCBdICYmIGJyZWFrCiAgICBpPSQoKGkgKyAxKSkKICAgIHNsZWVwIDEKICBkb25lCiAgaWYgY3VybCAtc2YgLW8gL2Rldi9udWxsIC11ICJvcGVuY29kZTokT1BFTkNPREVfUEFTU1dPUkQiIC1IICdjb250ZW50LXR5cGU6IGFwcGxpY2F0aW9uL2pzb24nIC1YIFBPU1QgIiRBUEkiIFwKICAgIC1kICJ7XCJ0aXRsZVwiOlwiU3RhcnQgaGVyZVwiLFwibG9jYXRpb25cIjp7XCJkaXJlY3RvcnlcIjpcIiQxXCJ9fSI7IHRoZW4KICAgIHRvdWNoICIkU1RBVEUvc3RhcnQtc2Vzc2lvbiIKICAgIGxvZyAiY3JlYXRlZCB0aGUgU3RhcnQgaGVyZSBzZXNzaW9uIGluICQxIgogIGZpCn0KKAogIERJUj0kV1MKICBpZiBbIC1uICIkR0lUX1JFUE8iIF0gJiYgY29tbWFuZCAtdiBnaXQgPi9kZXYvbnVsbCAmJiBjbG9uZV9yZXBvOyB0aGVuIERJUj0kUkVQT19ESVI7IGZpCiAgY29tbWFuZCAtdiBjdXJsID4vZGV2L251bGwgJiYgc3RhcnRfc2Vzc2lvbiAiJERJUiIKKSAmCgpjZCAiJFdTIiB8fCBleGl0IDEKY29tbWFuZCAtdiBiYXNoID4vZGV2L251bGwgJiYgZXhwb3J0IFNIRUxMPS9iaW4vYmFzaAojIFRvb2xzIGluc3RhbGxlZCBpbnRvIHRoZSBob21lIGZvbGRlciAoQ2xhdWRlIENvZGUncyBpbnN0YWxsZXIsIHBpcCAtLXVzZXIpIGxpdmUgb24gdGhlIHZvbHVtZTsga2VlcCB0aGVtIG9uIFBBVEguCmV4cG9ydCBQQVRIPSIkSC8ubG9jYWwvYmluOiRQQVRIIgpleHBvcnQgT1BFTkNPREVfRElTQUJMRV9BVVRPVVBEQVRFPTEKbG9nICJzdGFydGluZyBPcGVuQ29kZSAkKG9wZW5jb2RlIC0tdmVyc2lvbiAyPi9kZXYvbnVsbCB8IHNlZCAncy9eb3BlbmNvZGUgLy8nKSBvbiBwb3J0ICR7UE9SVDotNDA5Nn07IHNpZ24gaW4gd2l0aCB0aGUgcGFzc3dvcmQgZnJvbSBPUEVOQ09ERV9QQVNTV09SRCIKCiMgdGluaSByZWFwcyBmaW5pc2hlZCBzaGVsbCBwcm9jZXNzZXMsIHdoaWNoIG9wZW5jb2RlIGFzIFBJRCAxIGRvZXMgbm90ICh1cHN0cmVhbSBpc3N1ZSAjNTM1NjQpLgppZiBjb21tYW5kIC12IHRpbmkgPi9kZXYvbnVsbDsgdGhlbgogIGV4ZWMgdGluaSAtLSBvcGVuY29kZSBzZXJ2ZSAtLWhvc3RuYW1lIDAuMC4wLjAgLS1wb3J0ICIke1BPUlQ6LTQwOTZ9IgpmaQpleGVjIG9wZW5jb2RlIHNlcnZlIC0taG9zdG5hbWUgMC4wLjAuMCAtLXBvcnQgIiR7UE9SVDotNDA5Nn0iCg== | base64 -d > /tmp/start.sh && exec sh /tmp/start.sh"`
- **Health check:** /
- **Public domain:** Yes

## Documentation

# Deploy and Host OpenCode 2 (web + phone) on Railway

OpenCode is the open-source AI coding agent. This template runs OpenCode 2 from its official image, always on, so you can start a task on your laptop and follow it on your phone.

![OpenCode 2 on Railway, used from a browser, a phone and a terminal](https://cdn.jsdelivr.net/gh/mikedepo/railway-template-assets@7fbdd21c6baf0347827e259f4244c269e0d38320/opencode/banner.png)

## About Hosting OpenCode 2 (web + phone)

Choose a password on the deploy form. Open the service's URL, tap **Use password**, enter it and tap **Connect**. On a phone, add the page to your home screen. Git, gh and bash come installed; sessions, sign-ins and files stay on a volume.

### Connect a model

1. Paste an Anthropic, OpenAI or OpenRouter key on the deploy form, or connect a provider later with **Connect an integration** in OpenCode.
2. ChatGPT plan: connect **OpenAI** and choose **Codex device code (legacy)**. **Sign in with ChatGPT** works only when OpenCode runs on your own computer.
3. GitHub Copilot: connect **GitHub Copilot** and enter the code it shows at github.com.
4. Claude Pro or Max: OpenCode uses them only through Claude Code (its Claude Agent provider), which this template doesn't include. Use an Anthropic API key.
5. OpenCode's free models need no key, but they are rate-limited per network address and Railway's addresses are shared. If you see "Free usage limit reached", connect a provider.

### Work on your GitHub repos

1. Paste a GitHub token into `GITHUB_TOKEN` on the deploy form: git and `gh` sign in with it, and commits carry your GitHub name.
2. Set `GIT_REPO` to `owner/name` to clone that repo into the workspace on first start.
3. Need more tools, such as Node.js or Python? List Alpine packages in `EXTRA_PACKAGES` (for example `nodejs npm python3`); they are installed at every start.

### Connect from your laptop

1. With OpenCode 2 installed, run `OPENCODE_PASSWORD=yourpassword opencode --server https://your-app.up.railway.app` using your password and URL.
2. In OpenCode Desktop, choose **Add server** and enter the same URL and password.

## Common Use Cases

- Run coding tasks while you're away
- Check on your agent from your phone
- Fix GitHub issues from anywhere

## Dependencies for OpenCode 2 (web + phone) Hosting

- OpenCode
- Volume at /root

### Deployment Dependencies

- [OpenCode web and server docs](https://opencode.ai/v2/docs/cli/web)
- [OpenCode providers](https://opencode.ai/v2/docs/providers)

### Implementation Details

![OpenCode 2 architecture: one public service with a volume, calling your model provider and GitHub](https://cdn.jsdelivr.net/gh/mikedepo/railway-template-assets@7fbdd21c6baf0347827e259f4244c269e0d38320/opencode/architecture.png)

Back up the volume: it holds your sessions, sign-ins and workspace. It idles at about 0.35 GB and ran a real agent task within the Free plan's 0.5 GB; builds and tests need more.

## Why Deploy OpenCode 2 (web + phone) on Railway?


Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.

By deploying OpenCode 2 (web + phone) on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.


**Updated 2026-10-30:** First release, OpenCode 2.2.4.


## Similar templates

- [Chat Chat](https://railway.com/deploy/-WWW5r) — Chat Chat, your own unified chat and search to AI platform.
- [Weaviate](https://railway.com/deploy/weaviate-1) — Vector database with hybrid search and an API key-protected API
- [Möbius v0.1 Personal AI OS](https://railway.com/deploy/mobius-v01-personal-ai-os) — Self-hosted AI agent that builds and runs apps for you, with memory.

Open this page in a browser: https://railway.com/deploy/opencode-2-web-phone
