Install
openclaw skills install aitun-tunnelExpose local web pages and HTTP services to the public internet via secure tunnels. Perfect for AI agents that build websites locally and need to share them publicly.
openclaw skills install aitun-tunnelUse this skill when:
Do NOT use this skill when:
pip install aitun
Or if already installed, verify:
which aitun || pip show aitun
Ensure the local web service is running on a port. For static HTML files:
# Serve a directory with a built HTML page
python3 -m http.server 8080 --directory /path/to/html/dir
For other frameworks, start their dev server:
npm run dev -- -p 3000flask run --port 5000Option A: Free instant tunnel (no sign-up, 24-hour limit)
aitun -s aitun.cc:6639 -l <PORT> --free &
AITUN_PID=$!
sleep 3
The output will contain the public URL, e.g.:
https://abc123.t.aitun.cchttps://aitun.cc/s/abc123Option B: Via API (no CLI needed)
curl -s -X POST https://aitun.cc/aitun-api/tunnel/free
Returns JSON with tunnel_key, url, and subdomain_url.
Option C: Custom subdomain (requires Google sign-in at aitun.cc)
# Check availability
curl -s https://aitun.cc/aitun-api/subdomain/check/<name>
# Register via website: https://aitun.cc
# Then use:
aitun -s aitun.cc:6639 -l <PORT> -sub <name>
Tell the user their website is now publicly accessible:
Your website is now live at: https://abc123.t.aitun.cc
This free tunnel expires in 24 hours.
For a permanent URL (e.g., myapp.aitun.cc), register at https://aitun.cc
When done, stop the tunnel:
kill $AITUN_PID 2>/dev/null
GET https://aitun.cc/aitun-api/subdomain/check/{name}
Response: { "available": true, "name": "...", "url": "https://name.aitun.cc" }
POST https://aitun.cc/aitun-api/tunnel/free
Response: { "tunnel_key": "abc123", "url": "https://aitun.cc/s/abc123", "subdomain_url": "https://abc123.t.aitun.cc" }
POST https://aitun.cc/aitun-api/auth/google
Body: { "access_token": "<google-access-token>" }
Response: { "user": { ..., "token": "<jwt-token>" } }
POST https://aitun.cc/aitun-api/subdomain/register
Headers: Authorization: Bearer <token>
Body: { "name": "myapp" }
--relay flag) to improve network performance