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.
- package/LICENSE +8 -0
- package/README.md +538 -0
- package/dist/argv-CfSowvEA.js +63 -0
- package/dist/config-B-mboG4v.js +4 -0
- package/dist/eliza-CPJjgw-e.js +1491 -0
- package/dist/eliza.js +2192 -0
- package/dist/entry.js +232 -0
- package/dist/index.js +209 -0
- package/dist/links-BFKlWqSe.js +15 -0
- package/dist/paths-D_yh1DEJ.js +69 -0
- package/dist/plugins-cli-B7kSre2c.js +134 -0
- package/dist/program-6KwWwKKh.js +510 -0
- package/dist/register.agents-CPVmSjMG.js +17 -0
- package/dist/register.browser-B2ooXxNx.js +15 -0
- package/dist/register.channels-CMYQ6K6Y.js +42 -0
- package/dist/register.cron-D91lY1_Y.js +9 -0
- package/dist/register.devices-rU5I5L_y.js +13 -0
- package/dist/register.gateway-82SLAvw3.js +22 -0
- package/dist/register.hooks-B_XTBEkt.js +9 -0
- package/dist/register.logs-BgEGcPd8.js +10 -0
- package/dist/register.models-BJt9eVgZ.js +26 -0
- package/dist/register.nodes-B5xY1s8a.js +9 -0
- package/dist/register.skills-SFQqYIhg.js +10 -0
- package/dist/register.subclis-uF_AsbWR.js +187 -0
- package/dist/run-main-XODklzS-.js +56 -0
- package/dist/theme-DBvtuGeq.js +36 -0
- package/dist/utils-C1AUpp_V.js +42 -0
- package/dist/version-Cpn3yr5D.js +26 -0
- package/dist/workspace-Co3Wul2D.js +206 -0
- package/dist/workspace-DCA6MNVK.js +350 -0
- package/docs/.i18n/README.md +31 -0
- package/docs/.i18n/glossary.zh-CN.json +210 -0
- package/docs/.i18n/zh-CN.tm.jsonl +1329 -0
- package/docs/CNAME +1 -0
- package/docs/automation/cron-jobs.md +468 -0
- package/docs/automation/cron-vs-heartbeat.md +254 -0
- package/docs/automation/gmail-pubsub.md +256 -0
- package/docs/automation/poll.md +69 -0
- package/docs/automation/webhook.md +163 -0
- package/docs/bedrock.md +176 -0
- package/docs/brave-search.md +41 -0
- package/docs/broadcast-groups.md +442 -0
- package/docs/cli/acp.md +170 -0
- package/docs/cli/agent.md +24 -0
- package/docs/cli/agents.md +75 -0
- package/docs/cli/approvals.md +50 -0
- package/docs/cli/browser.md +107 -0
- package/docs/cli/channels.md +79 -0
- package/docs/cli/config.md +50 -0
- package/docs/cli/configure.md +33 -0
- package/docs/cli/cron.md +42 -0
- package/docs/cli/dashboard.md +16 -0
- package/docs/cli/devices.md +67 -0
- package/docs/cli/directory.md +63 -0
- package/docs/cli/dns.md +23 -0
- package/docs/cli/docs.md +15 -0
- package/docs/cli/doctor.md +41 -0
- package/docs/cli/gateway.md +199 -0
- package/docs/cli/health.md +21 -0
- package/docs/cli/hooks.md +291 -0
- package/docs/cli/index.md +1029 -0
- package/docs/cli/logs.md +24 -0
- package/docs/cli/memory.md +45 -0
- package/docs/cli/message.md +239 -0
- package/docs/cli/models.md +79 -0
- package/docs/cli/node.md +112 -0
- package/docs/cli/nodes.md +73 -0
- package/docs/cli/onboard.md +29 -0
- package/docs/cli/pairing.md +21 -0
- package/docs/cli/plugins.md +62 -0
- package/docs/cli/reset.md +17 -0
- package/docs/cli/sandbox.md +152 -0
- package/docs/cli/security.md +26 -0
- package/docs/cli/sessions.md +16 -0
- package/docs/cli/setup.md +29 -0
- package/docs/cli/skills.md +26 -0
- package/docs/cli/status.md +26 -0
- package/docs/cli/system.md +60 -0
- package/docs/cli/tui.md +23 -0
- package/docs/cli/uninstall.md +17 -0
- package/docs/cli/update.md +98 -0
- package/docs/cli/voicecall.md +34 -0
- package/docs/cli/webhooks.md +25 -0
- package/docs/concepts/agent-loop.md +146 -0
- package/docs/concepts/agent-workspace.md +229 -0
- package/docs/concepts/agent.md +122 -0
- package/docs/concepts/architecture.md +129 -0
- package/docs/concepts/channel-routing.md +114 -0
- package/docs/concepts/compaction.md +61 -0
- package/docs/concepts/context.md +159 -0
- package/docs/concepts/features.md +53 -0
- package/docs/concepts/group-messages.md +84 -0
- package/docs/concepts/groups.md +373 -0
- package/docs/concepts/markdown-formatting.md +130 -0
- package/docs/concepts/memory.md +546 -0
- package/docs/concepts/messages.md +154 -0
- package/docs/concepts/model-failover.md +149 -0
- package/docs/concepts/model-providers.md +315 -0
- package/docs/concepts/models.md +208 -0
- package/docs/concepts/multi-agent.md +376 -0
- package/docs/concepts/oauth.md +145 -0
- package/docs/concepts/plugins.md +454 -0
- package/docs/concepts/presence.md +102 -0
- package/docs/concepts/queue.md +89 -0
- package/docs/concepts/retry.md +69 -0
- package/docs/concepts/secrets.md +300 -0
- package/docs/concepts/session-pruning.md +122 -0
- package/docs/concepts/session-tool.md +193 -0
- package/docs/concepts/session.md +188 -0
- package/docs/concepts/sessions.md +10 -0
- package/docs/concepts/skills.md +392 -0
- package/docs/concepts/streaming.md +135 -0
- package/docs/concepts/system-prompt.md +114 -0
- package/docs/concepts/timezone.md +91 -0
- package/docs/concepts/typebox.md +289 -0
- package/docs/concepts/typing-indicators.md +68 -0
- package/docs/concepts/usage-tracking.md +35 -0
- package/docs/custom.css +4 -0
- package/docs/date-time.md +128 -0
- package/docs/debugging.md +162 -0
- package/docs/docs.json +1599 -0
- package/docs/environment.md +81 -0
- package/docs/hooks.md +876 -0
- package/docs/index.md +179 -0
- package/docs/install/ansible.md +208 -0
- package/docs/install/bun.md +59 -0
- package/docs/install/development-channels.md +75 -0
- package/docs/install/docker.md +567 -0
- package/docs/install/index.md +185 -0
- package/docs/install/installer.md +123 -0
- package/docs/install/migrating.md +192 -0
- package/docs/install/nix.md +96 -0
- package/docs/install/node.md +78 -0
- package/docs/install/uninstall.md +128 -0
- package/docs/install/updating.md +228 -0
- package/docs/logging.md +350 -0
- package/docs/multi-agent-sandbox-tools.md +395 -0
- package/docs/network.md +54 -0
- package/docs/nodes/audio.md +114 -0
- package/docs/nodes/camera.md +156 -0
- package/docs/nodes/images.md +72 -0
- package/docs/nodes/index.md +341 -0
- package/docs/nodes/location-command.md +113 -0
- package/docs/nodes/media-understanding.md +379 -0
- package/docs/nodes/talk.md +90 -0
- package/docs/nodes/voicewake.md +65 -0
- package/docs/northflank.mdx +53 -0
- package/docs/perplexity.md +80 -0
- package/docs/platforms/android.md +129 -0
- package/docs/platforms/digitalocean.md +262 -0
- package/docs/platforms/exe-dev.md +125 -0
- package/docs/platforms/fly.md +486 -0
- package/docs/platforms/gcp.md +503 -0
- package/docs/platforms/hetzner.md +330 -0
- package/docs/platforms/index.md +53 -0
- package/docs/platforms/ios.md +106 -0
- package/docs/platforms/linux.md +94 -0
- package/docs/platforms/mac/bundled-gateway.md +73 -0
- package/docs/platforms/mac/canvas.md +125 -0
- package/docs/platforms/mac/child-process.md +69 -0
- package/docs/platforms/mac/dev-setup.md +102 -0
- package/docs/platforms/mac/health.md +34 -0
- package/docs/platforms/mac/icon.md +31 -0
- package/docs/platforms/mac/logging.md +57 -0
- package/docs/platforms/mac/menu-bar.md +81 -0
- package/docs/platforms/mac/peekaboo.md +65 -0
- package/docs/platforms/mac/permissions.md +44 -0
- package/docs/platforms/mac/release.md +85 -0
- package/docs/platforms/mac/remote.md +83 -0
- package/docs/platforms/mac/signing.md +47 -0
- package/docs/platforms/mac/skills.md +33 -0
- package/docs/platforms/mac/voice-overlay.md +60 -0
- package/docs/platforms/mac/voicewake.md +67 -0
- package/docs/platforms/mac/webchat.md +41 -0
- package/docs/platforms/mac/xpc.md +61 -0
- package/docs/platforms/macos-vm.md +281 -0
- package/docs/platforms/macos.md +203 -0
- package/docs/platforms/oracle.md +303 -0
- package/docs/platforms/raspberry-pi.md +358 -0
- package/docs/platforms/windows.md +159 -0
- package/docs/plugin.md +651 -0
- package/docs/plugins/agent-tools.md +99 -0
- package/docs/plugins/manifest.md +71 -0
- package/docs/plugins/voice-call.md +273 -0
- package/docs/plugins/zalouser.md +70 -0
- package/docs/providers/anthropic.md +152 -0
- package/docs/providers/claude-max-api-proxy.md +148 -0
- package/docs/providers/cloudflare-ai-gateway.md +71 -0
- package/docs/providers/deepgram.md +93 -0
- package/docs/providers/glm.md +33 -0
- package/docs/providers/index.md +63 -0
- package/docs/providers/minimax.md +208 -0
- package/docs/providers/models.md +51 -0
- package/docs/providers/moonshot.md +142 -0
- package/docs/providers/ollama.md +223 -0
- package/docs/providers/openai.md +62 -0
- package/docs/providers/opencode.md +36 -0
- package/docs/providers/openrouter.md +37 -0
- package/docs/providers/qwen.md +53 -0
- package/docs/providers/synthetic.md +99 -0
- package/docs/providers/venice.md +267 -0
- package/docs/providers/vercel-ai-gateway.md +50 -0
- package/docs/providers/xiaomi.md +64 -0
- package/docs/providers/zai.md +36 -0
- package/docs/railway.mdx +99 -0
- package/docs/reference/templates/AGENTS.md +9 -0
- package/docs/reference/templates/BOOTSTRAP.md +3 -0
- package/docs/reference/templates/HEARTBEAT.md +3 -0
- package/docs/reference/templates/IDENTITY.md +3 -0
- package/docs/reference/templates/TOOLS.md +3 -0
- package/docs/reference/templates/USER.md +3 -0
- package/docs/render.mdx +165 -0
- package/docs/start/docs-directory.md +63 -0
- package/docs/start/getting-started.md +212 -0
- package/docs/start/milaidy.md +247 -0
- package/docs/start/onboarding.md +258 -0
- package/docs/start/pairing.md +86 -0
- package/docs/start/quickstart.md +81 -0
- package/docs/start/setup.md +149 -0
- package/docs/start/showcase.md +416 -0
- package/docs/start/wizard.md +418 -0
- package/docs/testing.md +368 -0
- package/docs/token-use.md +112 -0
- package/docs/tools/agent-send.md +53 -0
- package/docs/tools/apply-patch.md +50 -0
- package/docs/tools/browser-linux-troubleshooting.md +139 -0
- package/docs/tools/browser-login.md +68 -0
- package/docs/tools/browser.md +576 -0
- package/docs/tools/chrome-extension.md +178 -0
- package/docs/tools/clawhub.md +257 -0
- package/docs/tools/creating-skills.md +54 -0
- package/docs/tools/elevated.md +57 -0
- package/docs/tools/exec-approvals.md +246 -0
- package/docs/tools/exec.md +179 -0
- package/docs/tools/firecrawl.md +61 -0
- package/docs/tools/index.md +508 -0
- package/docs/tools/llm-task.md +115 -0
- package/docs/tools/reactions.md +22 -0
- package/docs/tools/skills-config.md +76 -0
- package/docs/tools/skills.md +300 -0
- package/docs/tools/slash-commands.md +196 -0
- package/docs/tools/subagents.md +151 -0
- package/docs/tools/thinking.md +73 -0
- package/docs/tools/web.md +261 -0
- package/docs/tui.md +159 -0
- package/docs/vps.md +43 -0
- package/docs/web/control-ui.md +221 -0
- package/docs/web/dashboard.md +46 -0
- package/docs/web/index.md +116 -0
- package/docs/web/webchat.md +49 -0
- package/milaidy.mjs +14 -0
- package/package.json +271 -0
- 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)
|