Agent-to-Owner File Bridge
Use this skill whenever an AI agent needs to share files, export results, upload outputs, or send data to its owner. Securely uploads files from the agent's...
Description
name: "Agent-to-Owner File Bridge" description: "Use this skill whenever an AI agent needs to share files, export results, upload outputs, or send data to its owner. Securely uploads files from the agent's private workspace to a hosted server and returns a direct download/preview URL. Use whenever the user says things like 'upload this file', 'share this with me', 'give me a link', 'send me the output', 'export results', or whenever the agent generates a file the user needs to access." version: "3.0.2" compatibility: "Requires: Python 3.8+ (autonomous mode only), pip, optionally Node.js for localtunnel. All autonomous-mode actions (server start, tunnel, key generation) require explicit user approval before execution." env: API_KEY: "Secret key for authenticating with the bridge server. In Manual Mode: provided by the user from their own hosted server. In Autonomous Mode: generated by the agent and stored in .env in the agent workspace — user must explicitly approve this step. Rotate or delete after each temporary session." SERVER_URL: "Base URL of the bridge server (e.g. https://your-domain.com/upload/ or http://IP:5000). Provided by the user or set after the tunnel is opened." tags:
- file-upload
- utility
- automation
- bridge
Agent-to-Owner File Bridge
Upload files from an agent's workspace and generate a download/preview URL for the owner. The bridge server is open-source, self-hosted, and all sensitive steps require explicit user permission.
GitHub Repository: https://github.com/mrbeandev/OpenClaw-File-Links-Tool
🔒 Permissions & Security Boundaries
This skill has two modes. Both require the user to explicitly choose and approve before any action is taken:
| Action | Who approves | Scope |
|---|---|---|
Running server.py |
User must say "yes, start it" | Agent's own workspace only |
| Opening a public tunnel | User must say "yes, expose it" | Temporary, agent-session-scoped |
| Generating & storing API key | User must say "yes, generate it" | .env in agent's workspace |
| Uploading a file | User must confirm file + destination | Named file, single upload |
The agent never initiates any of these actions silently. Every step is gated by an explicit user confirmation.
🛠 Setup
The bridge server is a single open-source PHP or Python file deployed by the user on their own infrastructure.
Option A — PHP (recommended for shared hosting)
- Place
index.phpon any PHP host. - Set
API_KEYin a.envfile. - Note the URL and key.
Option B — Python (VPS / local machine)
pip install flaskthenpython server.py.- Set
API_KEYin.env. - Note the URL and key.
Once set up, give the agent your Server URL and API Key — no further setup needed.
🤖 Agent Workflow
When the user asks to upload or share a file:
-
Check for Bridge: Is a Server URL and API Key already configured in this session? If yes, skip to step 4.
-
Onboarding: Ask the user exactly one question:
"I can help you share files. How would you like to handle the hosting?
- Manual Mode (recommended): You already have a server — give me the URL and API Key and I'll upload right away.
- Autonomous Mode: I'll set up a temporary local bridge in my workspace and open a public tunnel. This requires your permission at each step."
-
Autonomous Mode (only if user explicitly chooses it):
Step 3a — Get user confirmation before starting:
"To run the bridge server I will: (1) copy
server.pyfrom the open-source repo, (2) generate an API key and save it to.envin my workspace, (3) start the server on port 5000. May I proceed?"- Only proceed if the user says yes.
Step 3b — Get user confirmation before opening the tunnel:
"To make the server reachable I will open a temporary public tunnel (via localtunnel or localhost.run). This creates a public URL pointing at my local port 5000. The link expires when my session ends. May I open the tunnel?"
- Only proceed if the user says yes.
- After tunnel is open, tell the user: "The tunnel URL is [URL]. This link is temporary and will stop working when this session ends."
-
Upload:
POSTthe file to the server URL withX-API-Keyheader andfileform-data field.- The JSON response contains
url(direct download) andview_url(rich in-browser viewer). - Give the user
view_urlfor text, code, images, and ZIPs — it renders content instantly in the browser. - Give
urlfor binary files or when a raw download link is requested.
📋 API Reference
| Endpoint | Method | Action |
|---|---|---|
/ |
POST |
Upload a file (file form-data field) |
/?action=list |
GET |
List all uploaded files |
/?action=view&file=... |
GET |
Rich viewer (ZIP: add &inner_file=path) |
/?action=delete |
POST |
Delete files (JSON: {"files": ["name..."]}) |
Authentication: X-API-Key request header on all endpoints.
📎 Bundled Reference
See api_instructions.txt for a concise API cheat-sheet with curl examples.
Reviews (0)
No reviews yet. Be the first to review!
Comments (0)
No comments yet. Be the first to share your thoughts!