milaidy 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (253) hide show
  1. package/LICENSE +8 -0
  2. package/README.md +538 -0
  3. package/dist/argv-CfSowvEA.js +63 -0
  4. package/dist/config-B-mboG4v.js +4 -0
  5. package/dist/eliza-CPJjgw-e.js +1491 -0
  6. package/dist/eliza.js +2192 -0
  7. package/dist/entry.js +232 -0
  8. package/dist/index.js +209 -0
  9. package/dist/links-BFKlWqSe.js +15 -0
  10. package/dist/paths-D_yh1DEJ.js +69 -0
  11. package/dist/plugins-cli-B7kSre2c.js +134 -0
  12. package/dist/program-6KwWwKKh.js +510 -0
  13. package/dist/register.agents-CPVmSjMG.js +17 -0
  14. package/dist/register.browser-B2ooXxNx.js +15 -0
  15. package/dist/register.channels-CMYQ6K6Y.js +42 -0
  16. package/dist/register.cron-D91lY1_Y.js +9 -0
  17. package/dist/register.devices-rU5I5L_y.js +13 -0
  18. package/dist/register.gateway-82SLAvw3.js +22 -0
  19. package/dist/register.hooks-B_XTBEkt.js +9 -0
  20. package/dist/register.logs-BgEGcPd8.js +10 -0
  21. package/dist/register.models-BJt9eVgZ.js +26 -0
  22. package/dist/register.nodes-B5xY1s8a.js +9 -0
  23. package/dist/register.skills-SFQqYIhg.js +10 -0
  24. package/dist/register.subclis-uF_AsbWR.js +187 -0
  25. package/dist/run-main-XODklzS-.js +56 -0
  26. package/dist/theme-DBvtuGeq.js +36 -0
  27. package/dist/utils-C1AUpp_V.js +42 -0
  28. package/dist/version-Cpn3yr5D.js +26 -0
  29. package/dist/workspace-Co3Wul2D.js +206 -0
  30. package/dist/workspace-DCA6MNVK.js +350 -0
  31. package/docs/.i18n/README.md +31 -0
  32. package/docs/.i18n/glossary.zh-CN.json +210 -0
  33. package/docs/.i18n/zh-CN.tm.jsonl +1329 -0
  34. package/docs/CNAME +1 -0
  35. package/docs/automation/cron-jobs.md +468 -0
  36. package/docs/automation/cron-vs-heartbeat.md +254 -0
  37. package/docs/automation/gmail-pubsub.md +256 -0
  38. package/docs/automation/poll.md +69 -0
  39. package/docs/automation/webhook.md +163 -0
  40. package/docs/bedrock.md +176 -0
  41. package/docs/brave-search.md +41 -0
  42. package/docs/broadcast-groups.md +442 -0
  43. package/docs/cli/acp.md +170 -0
  44. package/docs/cli/agent.md +24 -0
  45. package/docs/cli/agents.md +75 -0
  46. package/docs/cli/approvals.md +50 -0
  47. package/docs/cli/browser.md +107 -0
  48. package/docs/cli/channels.md +79 -0
  49. package/docs/cli/config.md +50 -0
  50. package/docs/cli/configure.md +33 -0
  51. package/docs/cli/cron.md +42 -0
  52. package/docs/cli/dashboard.md +16 -0
  53. package/docs/cli/devices.md +67 -0
  54. package/docs/cli/directory.md +63 -0
  55. package/docs/cli/dns.md +23 -0
  56. package/docs/cli/docs.md +15 -0
  57. package/docs/cli/doctor.md +41 -0
  58. package/docs/cli/gateway.md +199 -0
  59. package/docs/cli/health.md +21 -0
  60. package/docs/cli/hooks.md +291 -0
  61. package/docs/cli/index.md +1029 -0
  62. package/docs/cli/logs.md +24 -0
  63. package/docs/cli/memory.md +45 -0
  64. package/docs/cli/message.md +239 -0
  65. package/docs/cli/models.md +79 -0
  66. package/docs/cli/node.md +112 -0
  67. package/docs/cli/nodes.md +73 -0
  68. package/docs/cli/onboard.md +29 -0
  69. package/docs/cli/pairing.md +21 -0
  70. package/docs/cli/plugins.md +62 -0
  71. package/docs/cli/reset.md +17 -0
  72. package/docs/cli/sandbox.md +152 -0
  73. package/docs/cli/security.md +26 -0
  74. package/docs/cli/sessions.md +16 -0
  75. package/docs/cli/setup.md +29 -0
  76. package/docs/cli/skills.md +26 -0
  77. package/docs/cli/status.md +26 -0
  78. package/docs/cli/system.md +60 -0
  79. package/docs/cli/tui.md +23 -0
  80. package/docs/cli/uninstall.md +17 -0
  81. package/docs/cli/update.md +98 -0
  82. package/docs/cli/voicecall.md +34 -0
  83. package/docs/cli/webhooks.md +25 -0
  84. package/docs/concepts/agent-loop.md +146 -0
  85. package/docs/concepts/agent-workspace.md +229 -0
  86. package/docs/concepts/agent.md +122 -0
  87. package/docs/concepts/architecture.md +129 -0
  88. package/docs/concepts/channel-routing.md +114 -0
  89. package/docs/concepts/compaction.md +61 -0
  90. package/docs/concepts/context.md +159 -0
  91. package/docs/concepts/features.md +53 -0
  92. package/docs/concepts/group-messages.md +84 -0
  93. package/docs/concepts/groups.md +373 -0
  94. package/docs/concepts/markdown-formatting.md +130 -0
  95. package/docs/concepts/memory.md +546 -0
  96. package/docs/concepts/messages.md +154 -0
  97. package/docs/concepts/model-failover.md +149 -0
  98. package/docs/concepts/model-providers.md +315 -0
  99. package/docs/concepts/models.md +208 -0
  100. package/docs/concepts/multi-agent.md +376 -0
  101. package/docs/concepts/oauth.md +145 -0
  102. package/docs/concepts/plugins.md +454 -0
  103. package/docs/concepts/presence.md +102 -0
  104. package/docs/concepts/queue.md +89 -0
  105. package/docs/concepts/retry.md +69 -0
  106. package/docs/concepts/secrets.md +300 -0
  107. package/docs/concepts/session-pruning.md +122 -0
  108. package/docs/concepts/session-tool.md +193 -0
  109. package/docs/concepts/session.md +188 -0
  110. package/docs/concepts/sessions.md +10 -0
  111. package/docs/concepts/skills.md +392 -0
  112. package/docs/concepts/streaming.md +135 -0
  113. package/docs/concepts/system-prompt.md +114 -0
  114. package/docs/concepts/timezone.md +91 -0
  115. package/docs/concepts/typebox.md +289 -0
  116. package/docs/concepts/typing-indicators.md +68 -0
  117. package/docs/concepts/usage-tracking.md +35 -0
  118. package/docs/custom.css +4 -0
  119. package/docs/date-time.md +128 -0
  120. package/docs/debugging.md +162 -0
  121. package/docs/docs.json +1599 -0
  122. package/docs/environment.md +81 -0
  123. package/docs/hooks.md +876 -0
  124. package/docs/index.md +179 -0
  125. package/docs/install/ansible.md +208 -0
  126. package/docs/install/bun.md +59 -0
  127. package/docs/install/development-channels.md +75 -0
  128. package/docs/install/docker.md +567 -0
  129. package/docs/install/index.md +185 -0
  130. package/docs/install/installer.md +123 -0
  131. package/docs/install/migrating.md +192 -0
  132. package/docs/install/nix.md +96 -0
  133. package/docs/install/node.md +78 -0
  134. package/docs/install/uninstall.md +128 -0
  135. package/docs/install/updating.md +228 -0
  136. package/docs/logging.md +350 -0
  137. package/docs/multi-agent-sandbox-tools.md +395 -0
  138. package/docs/network.md +54 -0
  139. package/docs/nodes/audio.md +114 -0
  140. package/docs/nodes/camera.md +156 -0
  141. package/docs/nodes/images.md +72 -0
  142. package/docs/nodes/index.md +341 -0
  143. package/docs/nodes/location-command.md +113 -0
  144. package/docs/nodes/media-understanding.md +379 -0
  145. package/docs/nodes/talk.md +90 -0
  146. package/docs/nodes/voicewake.md +65 -0
  147. package/docs/northflank.mdx +53 -0
  148. package/docs/perplexity.md +80 -0
  149. package/docs/platforms/android.md +129 -0
  150. package/docs/platforms/digitalocean.md +262 -0
  151. package/docs/platforms/exe-dev.md +125 -0
  152. package/docs/platforms/fly.md +486 -0
  153. package/docs/platforms/gcp.md +503 -0
  154. package/docs/platforms/hetzner.md +330 -0
  155. package/docs/platforms/index.md +53 -0
  156. package/docs/platforms/ios.md +106 -0
  157. package/docs/platforms/linux.md +94 -0
  158. package/docs/platforms/mac/bundled-gateway.md +73 -0
  159. package/docs/platforms/mac/canvas.md +125 -0
  160. package/docs/platforms/mac/child-process.md +69 -0
  161. package/docs/platforms/mac/dev-setup.md +102 -0
  162. package/docs/platforms/mac/health.md +34 -0
  163. package/docs/platforms/mac/icon.md +31 -0
  164. package/docs/platforms/mac/logging.md +57 -0
  165. package/docs/platforms/mac/menu-bar.md +81 -0
  166. package/docs/platforms/mac/peekaboo.md +65 -0
  167. package/docs/platforms/mac/permissions.md +44 -0
  168. package/docs/platforms/mac/release.md +85 -0
  169. package/docs/platforms/mac/remote.md +83 -0
  170. package/docs/platforms/mac/signing.md +47 -0
  171. package/docs/platforms/mac/skills.md +33 -0
  172. package/docs/platforms/mac/voice-overlay.md +60 -0
  173. package/docs/platforms/mac/voicewake.md +67 -0
  174. package/docs/platforms/mac/webchat.md +41 -0
  175. package/docs/platforms/mac/xpc.md +61 -0
  176. package/docs/platforms/macos-vm.md +281 -0
  177. package/docs/platforms/macos.md +203 -0
  178. package/docs/platforms/oracle.md +303 -0
  179. package/docs/platforms/raspberry-pi.md +358 -0
  180. package/docs/platforms/windows.md +159 -0
  181. package/docs/plugin.md +651 -0
  182. package/docs/plugins/agent-tools.md +99 -0
  183. package/docs/plugins/manifest.md +71 -0
  184. package/docs/plugins/voice-call.md +273 -0
  185. package/docs/plugins/zalouser.md +70 -0
  186. package/docs/providers/anthropic.md +152 -0
  187. package/docs/providers/claude-max-api-proxy.md +148 -0
  188. package/docs/providers/cloudflare-ai-gateway.md +71 -0
  189. package/docs/providers/deepgram.md +93 -0
  190. package/docs/providers/glm.md +33 -0
  191. package/docs/providers/index.md +63 -0
  192. package/docs/providers/minimax.md +208 -0
  193. package/docs/providers/models.md +51 -0
  194. package/docs/providers/moonshot.md +142 -0
  195. package/docs/providers/ollama.md +223 -0
  196. package/docs/providers/openai.md +62 -0
  197. package/docs/providers/opencode.md +36 -0
  198. package/docs/providers/openrouter.md +37 -0
  199. package/docs/providers/qwen.md +53 -0
  200. package/docs/providers/synthetic.md +99 -0
  201. package/docs/providers/venice.md +267 -0
  202. package/docs/providers/vercel-ai-gateway.md +50 -0
  203. package/docs/providers/xiaomi.md +64 -0
  204. package/docs/providers/zai.md +36 -0
  205. package/docs/railway.mdx +99 -0
  206. package/docs/reference/templates/AGENTS.md +9 -0
  207. package/docs/reference/templates/BOOTSTRAP.md +3 -0
  208. package/docs/reference/templates/HEARTBEAT.md +3 -0
  209. package/docs/reference/templates/IDENTITY.md +3 -0
  210. package/docs/reference/templates/TOOLS.md +3 -0
  211. package/docs/reference/templates/USER.md +3 -0
  212. package/docs/render.mdx +165 -0
  213. package/docs/start/docs-directory.md +63 -0
  214. package/docs/start/getting-started.md +212 -0
  215. package/docs/start/milaidy.md +247 -0
  216. package/docs/start/onboarding.md +258 -0
  217. package/docs/start/pairing.md +86 -0
  218. package/docs/start/quickstart.md +81 -0
  219. package/docs/start/setup.md +149 -0
  220. package/docs/start/showcase.md +416 -0
  221. package/docs/start/wizard.md +418 -0
  222. package/docs/testing.md +368 -0
  223. package/docs/token-use.md +112 -0
  224. package/docs/tools/agent-send.md +53 -0
  225. package/docs/tools/apply-patch.md +50 -0
  226. package/docs/tools/browser-linux-troubleshooting.md +139 -0
  227. package/docs/tools/browser-login.md +68 -0
  228. package/docs/tools/browser.md +576 -0
  229. package/docs/tools/chrome-extension.md +178 -0
  230. package/docs/tools/clawhub.md +257 -0
  231. package/docs/tools/creating-skills.md +54 -0
  232. package/docs/tools/elevated.md +57 -0
  233. package/docs/tools/exec-approvals.md +246 -0
  234. package/docs/tools/exec.md +179 -0
  235. package/docs/tools/firecrawl.md +61 -0
  236. package/docs/tools/index.md +508 -0
  237. package/docs/tools/llm-task.md +115 -0
  238. package/docs/tools/reactions.md +22 -0
  239. package/docs/tools/skills-config.md +76 -0
  240. package/docs/tools/skills.md +300 -0
  241. package/docs/tools/slash-commands.md +196 -0
  242. package/docs/tools/subagents.md +151 -0
  243. package/docs/tools/thinking.md +73 -0
  244. package/docs/tools/web.md +261 -0
  245. package/docs/tui.md +159 -0
  246. package/docs/vps.md +43 -0
  247. package/docs/web/control-ui.md +221 -0
  248. package/docs/web/dashboard.md +46 -0
  249. package/docs/web/index.md +116 -0
  250. package/docs/web/webchat.md +49 -0
  251. package/milaidy.mjs +14 -0
  252. package/package.json +271 -0
  253. package/skills/.cache/catalog.json +88519 -0
@@ -0,0 +1,129 @@
1
+ ---
2
+ summary: "Android app (node): connection runbook + Canvas/Chat/Camera"
3
+ read_when:
4
+ - Pairing or reconnecting the Android node
5
+ - Debugging Android gateway discovery or auth
6
+ - Verifying chat history parity across clients
7
+ title: "Android App"
8
+ ---
9
+
10
+ # Android App (Node)
11
+
12
+ ## Support snapshot
13
+
14
+ - Role: companion node app (Android does not host the Gateway).
15
+ - Gateway required: yes (run it on macOS, Linux, or Windows via WSL2).
16
+ - Install: [Getting Started](/start/getting-started) + [Pairing](/gateway/pairing).
17
+ - Gateway: [Runbook](/gateway) + [Configuration](/gateway/configuration).
18
+ - Protocols: [Gateway protocol](/gateway/protocol) (nodes + control plane).
19
+
20
+ ## System control
21
+
22
+ System control (launchd/systemd) lives on the Gateway host. See [Gateway](/gateway).
23
+
24
+ ## Connection Runbook
25
+
26
+ Android node app ⇄ (mDNS/NSD + WebSocket) ⇄ **Gateway**
27
+
28
+ Android connects directly to the Gateway WebSocket (default `ws://<host>:18789`) and uses Gateway-owned pairing.
29
+
30
+ ### Prerequisites
31
+
32
+ - You can run the Gateway on the “master” machine.
33
+ - Android device/emulator can reach the gateway WebSocket:
34
+ - Same LAN with mDNS/NSD, **or**
35
+ - Same Tailscale tailnet using Wide-Area Bonjour / unicast DNS-SD (see below), **or**
36
+ - Manual gateway host/port (fallback)
37
+ - You can run the CLI (`milaidy`) on the gateway machine (or via SSH).
38
+
39
+ ### 1) Start the Gateway
40
+
41
+ ```bash
42
+ milaidy gateway --port 18789 --verbose
43
+ ```
44
+
45
+ Confirm in logs you see something like:
46
+
47
+ - `listening on ws://0.0.0.0:18789`
48
+
49
+ For tailnet-only setups (recommended for Vienna ⇄ London), bind the gateway to the tailnet IP:
50
+
51
+ - Set `gateway.bind: "tailnet"` in `~/.milaidy/milaidy.json` on the gateway host.
52
+ - Restart the Gateway / macOS menubar app.
53
+
54
+ ### 2) Verify discovery (optional)
55
+
56
+ From the gateway machine:
57
+
58
+ ```bash
59
+ dns-sd -B _milaidy-gw._tcp local.
60
+ ```
61
+
62
+ More debugging notes: [Bonjour](/gateway/bonjour).
63
+
64
+ #### Tailnet (Vienna ⇄ London) discovery via unicast DNS-SD
65
+
66
+ Android NSD/mDNS discovery won’t cross networks. If your Android node and the gateway are on different networks but connected via Tailscale, use Wide-Area Bonjour / unicast DNS-SD instead:
67
+
68
+ 1. Set up a DNS-SD zone (example `milaidy.internal.`) on the gateway host and publish `_milaidy-gw._tcp` records.
69
+ 2. Configure Tailscale split DNS for your chosen domain pointing at that DNS server.
70
+
71
+ Details and example CoreDNS config: [Bonjour](/gateway/bonjour).
72
+
73
+ ### 3) Connect from Android
74
+
75
+ In the Android app:
76
+
77
+ - The app keeps its gateway connection alive via a **foreground service** (persistent notification).
78
+ - Open **Settings**.
79
+ - Under **Discovered Gateways**, select your gateway and hit **Connect**.
80
+ - If mDNS is blocked, use **Advanced → Manual Gateway** (host + port) and **Connect (Manual)**.
81
+
82
+ After the first successful pairing, Android auto-reconnects on launch:
83
+
84
+ - Manual endpoint (if enabled), otherwise
85
+ - The last discovered gateway (best-effort).
86
+
87
+ ### 4) Approve pairing (CLI)
88
+
89
+ On the gateway machine:
90
+
91
+ ```bash
92
+ milaidy nodes pending
93
+ milaidy nodes approve <requestId>
94
+ ```
95
+
96
+ Pairing details: [Gateway pairing](/gateway/pairing).
97
+
98
+ ### 5) Verify the node is connected
99
+
100
+ - Via nodes status:
101
+ ```bash
102
+ milaidy nodes status
103
+ ```
104
+ - Via Gateway:
105
+ ```bash
106
+ milaidy gateway call node.list --params "{}"
107
+ ```
108
+
109
+ ### 6) Chat + history
110
+
111
+ The Android node’s Chat sheet uses the gateway’s **primary session key** (`main`), so history and replies are shared with WebChat and other clients:
112
+
113
+ - History: `chat.history`
114
+ - Send: `chat.send`
115
+ - Push updates (best-effort): `chat.subscribe` → `event:"chat"`
116
+
117
+ ### 7) Canvas + camera
118
+
119
+ Canvas commands (foreground only):
120
+
121
+ - `canvas.eval`, `canvas.snapshot`, `canvas.navigate` (use `{"url":""}` or `{"url":"/"}` to return to the default scaffold). `canvas.snapshot` returns `{ format, base64 }` (default `format="jpeg"`).
122
+ - A2UI: `canvas.a2ui.push`, `canvas.a2ui.reset` (`canvas.a2ui.pushJSONL` legacy alias)
123
+
124
+ Camera commands (foreground only; permission-gated):
125
+
126
+ - `camera.snap` (jpg)
127
+ - `camera.clip` (mp4)
128
+
129
+ See [Camera node](/nodes/camera) for parameters and CLI helpers.
@@ -0,0 +1,262 @@
1
+ ---
2
+ summary: "Milaidy on DigitalOcean (simple paid VPS option)"
3
+ read_when:
4
+ - Setting up Milaidy on DigitalOcean
5
+ - Looking for cheap VPS hosting for Milaidy
6
+ title: "DigitalOcean"
7
+ ---
8
+
9
+ # Milaidy on DigitalOcean
10
+
11
+ ## Goal
12
+
13
+ Run a persistent Milaidy Gateway on DigitalOcean for **$6/month** (or $4/mo with reserved pricing).
14
+
15
+ If you want a $0/month option and don’t mind ARM + provider-specific setup, see the [Oracle Cloud guide](/platforms/oracle).
16
+
17
+ ## Cost Comparison (2026)
18
+
19
+ | Provider | Plan | Specs | Price/mo | Notes |
20
+ | ------------ | --------------- | ---------------------- | ----------- | ------------------------------------- |
21
+ | Oracle Cloud | Always Free ARM | up to 4 OCPU, 24GB RAM | $0 | ARM, limited capacity / signup quirks |
22
+ | Hetzner | CX22 | 2 vCPU, 4GB RAM | €3.79 (~$4) | Cheapest paid option |
23
+ | DigitalOcean | Basic | 1 vCPU, 1GB RAM | $6 | Easy UI, good docs |
24
+ | Vultr | Cloud Compute | 1 vCPU, 1GB RAM | $6 | Many locations |
25
+ | Linode | Nanode | 1 vCPU, 1GB RAM | $5 | Now part of Akamai |
26
+
27
+ **Picking a provider:**
28
+
29
+ - DigitalOcean: simplest UX + predictable setup (this guide)
30
+ - Hetzner: good price/perf (see [Hetzner guide](/platforms/hetzner))
31
+ - Oracle Cloud: can be $0/month, but is more finicky and ARM-only (see [Oracle guide](/platforms/oracle))
32
+
33
+ ---
34
+
35
+ ## Prerequisites
36
+
37
+ - DigitalOcean account ([signup with $200 free credit](https://m.do.co/c/signup))
38
+ - SSH key pair (or willingness to use password auth)
39
+ - ~20 minutes
40
+
41
+ ## 1) Create a Droplet
42
+
43
+ 1. Log into [DigitalOcean](https://cloud.digitalocean.com/)
44
+ 2. Click **Create → Droplets**
45
+ 3. Choose:
46
+ - **Region:** Closest to you (or your users)
47
+ - **Image:** Ubuntu 24.04 LTS
48
+ - **Size:** Basic → Regular → **$6/mo** (1 vCPU, 1GB RAM, 25GB SSD)
49
+ - **Authentication:** SSH key (recommended) or password
50
+ 4. Click **Create Droplet**
51
+ 5. Note the IP address
52
+
53
+ ## 2) Connect via SSH
54
+
55
+ ```bash
56
+ ssh root@YOUR_DROPLET_IP
57
+ ```
58
+
59
+ ## 3) Install Milaidy
60
+
61
+ ```bash
62
+ # Update system
63
+ apt update && apt upgrade -y
64
+
65
+ # Install Node.js 22
66
+ curl -fsSL https://deb.nodesource.com/setup_22.x | bash -
67
+ apt install -y nodejs
68
+
69
+ # Install Milaidy
70
+ curl -fsSL https://milaidy.ai/install.sh | bash
71
+
72
+ # Verify
73
+ milaidy --version
74
+ ```
75
+
76
+ ## 4) Run Onboarding
77
+
78
+ ```bash
79
+ milaidy onboard --install-daemon
80
+ ```
81
+
82
+ The wizard will walk you through:
83
+
84
+ - Model auth (API keys or OAuth)
85
+ - Channel setup (Telegram, WhatsApp, Discord, etc.)
86
+ - Gateway token (auto-generated)
87
+ - Daemon installation (systemd)
88
+
89
+ ## 5) Verify the Gateway
90
+
91
+ ```bash
92
+ # Check status
93
+ milaidy status
94
+
95
+ # Check service
96
+ systemctl --user status milaidy-gateway.service
97
+
98
+ # View logs
99
+ journalctl --user -u milaidy-gateway.service -f
100
+ ```
101
+
102
+ ## 6) Access the Dashboard
103
+
104
+ The gateway binds to loopback by default. To access the Control UI:
105
+
106
+ **Option A: SSH Tunnel (recommended)**
107
+
108
+ ```bash
109
+ # From your local machine
110
+ ssh -L 18789:localhost:18789 root@YOUR_DROPLET_IP
111
+
112
+ # Then open: http://localhost:18789
113
+ ```
114
+
115
+ **Option B: Tailscale Serve (HTTPS, loopback-only)**
116
+
117
+ ```bash
118
+ # On the droplet
119
+ curl -fsSL https://tailscale.com/install.sh | sh
120
+ tailscale up
121
+
122
+ # Configure Gateway to use Tailscale Serve
123
+ milaidy config set gateway.tailscale.mode serve
124
+ milaidy gateway restart
125
+ ```
126
+
127
+ Open: `https://<magicdns>/`
128
+
129
+ Notes:
130
+
131
+ - Serve keeps the Gateway loopback-only and authenticates via Tailscale identity headers.
132
+ - To require token/password instead, set `gateway.auth.allowTailscale: false` or use `gateway.auth.mode: "password"`.
133
+
134
+ **Option C: Tailnet bind (no Serve)**
135
+
136
+ ```bash
137
+ milaidy config set gateway.bind tailnet
138
+ milaidy gateway restart
139
+ ```
140
+
141
+ Open: `http://<tailscale-ip>:18789` (token required).
142
+
143
+ ## 7) Connect Your Channels
144
+
145
+ ### Telegram
146
+
147
+ ```bash
148
+ milaidy pairing list telegram
149
+ milaidy pairing approve telegram <CODE>
150
+ ```
151
+
152
+ ### WhatsApp
153
+
154
+ ```bash
155
+ milaidy channels login whatsapp
156
+ # Scan QR code
157
+ ```
158
+
159
+ See [Channels](/channels) for other providers.
160
+
161
+ ---
162
+
163
+ ## Optimizations for 1GB RAM
164
+
165
+ The $6 droplet only has 1GB RAM. To keep things running smoothly:
166
+
167
+ ### Add swap (recommended)
168
+
169
+ ```bash
170
+ fallocate -l 2G /swapfile
171
+ chmod 600 /swapfile
172
+ mkswap /swapfile
173
+ swapon /swapfile
174
+ echo '/swapfile none swap sw 0 0' >> /etc/fstab
175
+ ```
176
+
177
+ ### Use a lighter model
178
+
179
+ If you're hitting OOMs, consider:
180
+
181
+ - Using API-based models (Claude, GPT) instead of local models
182
+ - Setting `agents.defaults.model.primary` to a smaller model
183
+
184
+ ### Monitor memory
185
+
186
+ ```bash
187
+ free -h
188
+ htop
189
+ ```
190
+
191
+ ---
192
+
193
+ ## Persistence
194
+
195
+ All state lives in:
196
+
197
+ - `~/.milaidy/` — config, credentials, session data
198
+ - `~/.milaidy/workspace/` — workspace (AGENTS.md, memory, etc.)
199
+
200
+ These survive reboots. Back them up periodically:
201
+
202
+ ```bash
203
+ tar -czvf milaidy-backup.tar.gz ~/.milaidy ~/.milaidy/workspace
204
+ ```
205
+
206
+ ---
207
+
208
+ ## Oracle Cloud Free Alternative
209
+
210
+ Oracle Cloud offers **Always Free** ARM instances that are significantly more powerful than any paid option here — for $0/month.
211
+
212
+ | What you get | Specs |
213
+ | ----------------- | ---------------------- |
214
+ | **4 OCPUs** | ARM Ampere A1 |
215
+ | **24GB RAM** | More than enough |
216
+ | **200GB storage** | Block volume |
217
+ | **Forever free** | No credit card charges |
218
+
219
+ **Caveats:**
220
+
221
+ - Signup can be finicky (retry if it fails)
222
+ - ARM architecture — most things work, but some binaries need ARM builds
223
+
224
+ For the full setup guide, see [Oracle Cloud](/platforms/oracle). For signup tips and troubleshooting the enrollment process, see this [community guide](https://gist.github.com/rssnyder/51e3cfedd730e7dd5f4a816143b25dbd).
225
+
226
+ ---
227
+
228
+ ## Troubleshooting
229
+
230
+ ### Gateway won't start
231
+
232
+ ```bash
233
+ milaidy gateway status
234
+ milaidy doctor --non-interactive
235
+ journalctl -u milaidy --no-pager -n 50
236
+ ```
237
+
238
+ ### Port already in use
239
+
240
+ ```bash
241
+ lsof -i :18789
242
+ kill <PID>
243
+ ```
244
+
245
+ ### Out of memory
246
+
247
+ ```bash
248
+ # Check memory
249
+ free -h
250
+
251
+ # Add more swap
252
+ # Or upgrade to $12/mo droplet (2GB RAM)
253
+ ```
254
+
255
+ ---
256
+
257
+ ## See Also
258
+
259
+ - [Hetzner guide](/platforms/hetzner) — cheaper, more powerful
260
+ - [Docker install](/install/docker) — containerized setup
261
+ - [Tailscale](/gateway/tailscale) — secure remote access
262
+ - [Configuration](/gateway/configuration) — full config reference
@@ -0,0 +1,125 @@
1
+ ---
2
+ summary: "Run Milaidy Gateway on exe.dev (VM + HTTPS proxy) for remote access"
3
+ read_when:
4
+ - You want a cheap always-on Linux host for the Gateway
5
+ - You want remote Control UI access without running your own VPS
6
+ title: "exe.dev"
7
+ ---
8
+
9
+ # exe.dev
10
+
11
+ Goal: Milaidy Gateway running on an exe.dev VM, reachable from your laptop via: `https://<vm-name>.exe.xyz`
12
+
13
+ This page assumes exe.dev's default **exeuntu** image. If you picked a different distro, map packages accordingly.
14
+
15
+ ## Beginner quick path
16
+
17
+ 1. [https://exe.new/milaidy](https://exe.new/milaidy)
18
+ 2. Fill in your auth key/token as needed
19
+ 3. Click on "Agent" next to your VM, and wait...
20
+ 4. ???
21
+ 5. Profit
22
+
23
+ ## What you need
24
+
25
+ - exe.dev account
26
+ - `ssh exe.dev` access to [exe.dev](https://exe.dev) virtual machines (optional)
27
+
28
+ ## Automated Install with Shelley
29
+
30
+ Shelley, [exe.dev](https://exe.dev)'s agent, can install Milaidy instantly with our
31
+ prompt. The prompt used is as below:
32
+
33
+ ```
34
+ Set up Milaidy (https://docs.milaidy.ai/install) on this VM. Use the non-interactive and accept-risk flags for milaidy onboarding. Add the supplied auth or token as needed. Configure nginx to forward from the default port 18789 to the root location on the default enabled site config, making sure to enable Websocket support. Pairing is done by "milaidy devices list" and "milaidy device approve <request id>". Make sure the dashboard shows that Milaidy's health is OK. exe.dev handles forwarding from port 8000 to port 80/443 and HTTPS for us, so the final "reachable" should be <vm-name>.exe.xyz, without port specification.
35
+ ```
36
+
37
+ ## Manual installation
38
+
39
+ ## 1) Create the VM
40
+
41
+ From your device:
42
+
43
+ ```bash
44
+ ssh exe.dev new
45
+ ```
46
+
47
+ Then connect:
48
+
49
+ ```bash
50
+ ssh <vm-name>.exe.xyz
51
+ ```
52
+
53
+ Tip: keep this VM **stateful**. Milaidy stores state under `~/.milaidy/` and `~/.milaidy/workspace/`.
54
+
55
+ ## 2) Install prerequisites (on the VM)
56
+
57
+ ```bash
58
+ sudo apt-get update
59
+ sudo apt-get install -y git curl jq ca-certificates openssl
60
+ ```
61
+
62
+ ## 3) Install Milaidy
63
+
64
+ Run the Milaidy install script:
65
+
66
+ ```bash
67
+ curl -fsSL https://milaidy.ai/install.sh | bash
68
+ ```
69
+
70
+ ## 4) Setup nginx to proxy Milaidy to port 8000
71
+
72
+ Edit `/etc/nginx/sites-enabled/default` with
73
+
74
+ ```
75
+ server {
76
+ listen 80 default_server;
77
+ listen [::]:80 default_server;
78
+ listen 8000;
79
+ listen [::]:8000;
80
+
81
+ server_name _;
82
+
83
+ location / {
84
+ proxy_pass http://127.0.0.1:18789;
85
+ proxy_http_version 1.1;
86
+
87
+ # WebSocket support
88
+ proxy_set_header Upgrade $http_upgrade;
89
+ proxy_set_header Connection "upgrade";
90
+
91
+ # Standard proxy headers
92
+ proxy_set_header Host $host;
93
+ proxy_set_header X-Real-IP $remote_addr;
94
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
95
+ proxy_set_header X-Forwarded-Proto $scheme;
96
+
97
+ # Timeout settings for long-lived connections
98
+ proxy_read_timeout 86400s;
99
+ proxy_send_timeout 86400s;
100
+ }
101
+ }
102
+ ```
103
+
104
+ ## 5) Access Milaidy and grant privileges
105
+
106
+ Access `https://<vm-name>.exe.xyz/?token=YOUR-TOKEN-FROM-TERMINAL` (see the Control UI output from onboarding). Approve
107
+ devices with `milaidy devices list` and `milaidy devices approve <requestId>`. When in doubt,
108
+ use Shelley from your browser!
109
+
110
+ ## Remote Access
111
+
112
+ Remote access is handled by [exe.dev](https://exe.dev)'s authentication. By
113
+ default, HTTP traffic from port 8000 is forwarded to `https://<vm-name>.exe.xyz`
114
+ with email auth.
115
+
116
+ ## Updating
117
+
118
+ ```bash
119
+ npm i -g milaidy@latest
120
+ milaidy doctor
121
+ milaidy gateway restart
122
+ milaidy health
123
+ ```
124
+
125
+ Guide: [Updating](/install/updating)