/install aitun-skill
AiTun Tunnel - Expose Local Web Pages to the Public Internet
When to Use
Use this skill when:
- You've built a web page, dashboard, or web app locally and need to share it publicly
- You need to test a local HTTP service from an external device
- You want to demo a locally-running application to someone
- You need a public webhook endpoint for an external service to call
- You want to expose a local API for integration testing
- You built a website for a user and they want to see it in their browser
Do NOT use this skill when:
- The content only needs to be viewed locally
- The user asks for a file download (use file sharing instead)
Instructions
Step 1: Install aitun
pip install aitun
Or if already installed, verify:
which aitun || pip show aitun
Step 2: Start the local web service
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:
- Next.js:
npm run dev -- -p 3000 - Flask:
flask run --port 5000 - Any HTTP service on any port
Step 3: Create a tunnel
Option A: Free instant tunnel (no sign-up, 24-hour limit)
Free tunnels use proxy address mode (path-based routing). No subdomain is assigned — the public URL uses the format aitun.cc/\x3Ctunnel-code>. Simply run without a token:
aitun -p 8080 &
AITUN_PID=$!
sleep 3
The output will contain the public URL, e.g.:
https://aitun.cc/abc123
Option B: Custom subdomain (requires Google sign-in at aitun.cc)
Registered users can create custom subdomains with two domain levels:
- Standard domain:
myapp.t.aitun.cc(up to 5 subdomains) - Short domain:
myapp.aitun.cc(up to 2 subdomains)
# Check availability
curl -s https://aitun.cc/aitun-api/subdomain/check/myapp
# Register via website: https://aitun.cc
# Then use your token:
aitun -p 8080 -k YOUR_TOKEN
Step 4: Share the public URL
Tell the user their website is now publicly accessible:
Your website is now live at: https://aitun.cc/abc123
This free tunnel expires in 24 hours.
For a permanent subdomain (e.g., myapp.aitun.cc), register at https://aitun.cc
Step 5: Clean up
When done, stop the tunnel:
kill $AITUN_PID 2>/dev/null
CLI Reference
The aitun command (installed via pip install aitun) accepts these flags:
| Flag | Description |
|---|---|
-p PORT |
Local service port (default: 8080) |
-k TOKEN |
Auth token for registered subdomain (omit for free tunnel) |
-s SERVER |
Server address (default: aitun.cc:6639) |
--host HOST |
Local service address (default: localhost) |
--tcp-ports PORTS |
TCP forwarding ports, comma-separated (e.g., 22,3306; requires -k) |
--p2p |
Enable P2P direct connection (default: enabled) |
--no-p2p |
Disable P2P, force server relay mode |
--daemon |
Run as background daemon |
--stop |
Stop running daemon |
Common Mistakes to Avoid
- Do NOT use
-lflag — it does not exist. Use-pfor the local port. - Do NOT use
--freeflag — free tunnel is the default when no-ktoken is provided. - Do NOT use
--subdomainflag — subdomain is configured on the server after authentication, not via CLI. - Do NOT use
aitun-connect— this command does not exist in the pip package. - The command is
aitun(notaitun-client) afterpip install aitun. - Always use
-pto specify the local port. The default is 8080 if omitted.
API Reference
Check subdomain availability
GET https://aitun.cc/aitun-api/subdomain/check/{name}
Response: { "available": true, "name": "...", "url": "https://name.t.aitun.cc" }
Google OAuth login
POST https://aitun.cc/aitun-api/auth/google
Body: { "access_token": "\x3Cgoogle-access-token>" }
Response: { "user": { ..., "token": "\x3Cjwt-token>" } }
Register subdomain (requires auth)
POST https://aitun.cc/aitun-api/subdomain/register
Headers: Authorization: Bearer \x3Ctoken>
Body: { "name": "myapp", "domain_base": "t.aitun.cc" }
Notes
- Free tunnels use proxy address mode (path-based URL like
aitun.cc/abc123), NOT subdomains - Free tunnels expire after 24 hours, auto-renewed on restart
- Registered subdomains remain active for 30 days of inactivity; use heartbeat to renew
- Standard domain subdomains (
xxx.t.aitun.cc): up to 5 per user - Short domain subdomains (
xxx.aitun.cc): up to 2 per user - All traffic is encrypted end-to-end
- Reserved subdomains (www, api, admin, test, etc.) cannot be registered
- Make sure OpenClaw is installed (local or Docker)
- Run the install command in chat:
/install aitun-skill - After installation, invoke the skill by name or use
/aitun-skill - Provide required inputs per the skill's parameter spec and get structured output
What is Aitun Skill?
Expose 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... It is an AI Agent Skill for Claude Code / OpenClaw, with 27 downloads so far.
How do I install Aitun Skill?
Run "/install aitun-skill" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.
Is Aitun Skill free?
Yes, Aitun Skill is completely free, licensed under MIT-0. You can download, install and use it at no cost.
Which platforms does Aitun Skill support?
Aitun Skill is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).
Who created Aitun Skill?
It is built and maintained by SamAI.cc (@ctz168); the current version is v3.0.0.