Agent-to-Owner File Bridge
This skill allows an AI Agent to bridge the gap between its private, isolated workspace and the user (owner) by uploading files and generating simple download URLs.
๐ Prerequisites & Setup
If you are using this tool for the first time, you must setup a bridge server on your own hosting (PHP) or via the standalone Python script (IP:PORT).
GitHub Repository: https://github.com/mrbeandev/OpenClaw-File-Links-Tool
Setup Instructions:
- Clone the repository to your host.
- Follow the instructions in the
README.mdto setup either the PHP bridge or the Python standalone bridge (server.py). - Set your
API_KEYin the.envfile on your server. - Provide the AI Agent with your Server URL and API Key.
๐ค Instructions for AI Agent
When the user requests to upload or share a file:
Check for Bridge: Determine if a File Bridge is already configured.
Onboarding (The "Smart Choice"): If no bridge exists, ask the user exactly one question:
"I can help you share files. How would you like to handle the hosting?
- Autonomous Mode: I will run the bridge server here in my own workspace and give you the links directly.
- Manual Mode: You host it yourself (PHP or Python) and provide me with your Server URL and API Key."
Execution - Autonomous Mode:
- Clone/Copy
server.pyfrom this repo. - Generate a secure
API_KEYand save it in a.envfile. - Run the server (e.g.,
python server.py). - Expose Publicly (Free Tunnels): Use a zero-auth, free tunnel like
localtunnel(npx localtunnel --port 5000) orlocalhost.run(ssh -R 80:localhost:5000 localhost.run). - Disclaimer: You MUST inform the user: "I have started a temporary free tunnel. This link will expire once my session ends or the tunnel closes."
- Store the resulting URL and Key for future use.
- Clone/Copy
Execution - Manual Mode:
- Wait for the user to provide the
SERVER_URLandAPI_KEY.
- Wait for the user to provide the
Perform Upload:
- Use
POST /on the server URL with theX-API-Keyheader. - Send the file as multipart form-data.
- Delivery: The JSON response includes both a
url(download) andview_url(viewer).- Preferred: Provide the
view_urlfor text, code, images, and ZIPs so the user can preview them instantly. - Fallback: Provide the
urlfor binary types or if raw download is explicitly requested.
- Preferred: Provide the
- Use
๐ API Spec Reference
| Endpoint | Method | Action |
|---|---|---|
/ |
POST |
Upload a file (Form data: file) |
/?action=list |
GET |
List all uploaded files |
/?action=view&file=... |
GET |
Rich content viewer (Supports ZIP deep-linking via &inner_file=...) |
/?action=delete |
POST |
Batch delete (JSON: {"files": ["name..."]}) |