LAN Media Server

Share images, screenshots, and files from the AI workspace to users on the local network via HTTP. Use when the agent needs to show images, browser screenshots, or any files to the user and the current channel doesn't support inline media (e.g., webchat, CLI). Starts a lightweight Node.js static file server on LAN, managed by systemd. Drop files in the shared directory and send the user a clickable URL.

MIT-0 · Free to use, modify, and redistribute. No attribution required.
0 · 826 · 3 current installs · 3 all-time installs
MIT-0
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
Name/description match the included files and instructions. The server and setup script only require Node.js and user-level systemd control, which are appropriate for a LAN file server.
Instruction Scope
SKILL.md instructs the agent to run scripts/setup.sh to create a user systemd service and to drop files into the shared directory. The instructions do not attempt to read unrelated files or exfiltrate data, but they do advise enabling systemd lingering (optional) and will create/enable a user service which gives persistent background execution (expected for this purpose).
Install Mechanism
No remote downloads or package installs are performed by the provided setup script; it only writes a systemd user unit and relies on an existing local Node.js binary. This is a low-risk, local-only install mechanism.
Credentials
No credentials or sensitive environment variables are requested. MEDIA_PORT and MEDIA_ROOT can be overridden by the user (as expected). There are no unexplained secrets or unrelated env requirements.
Persistence & Privilege
The skill installs a systemd user service and enables it so the server restarts automatically; this is appropriate for a persistent file server but does grant ongoing background execution under the user account. It does not request system-wide (root) privileges, though the script suggests enabling lingering (which requires sudo) if the user wants the service to survive reboots/logouts.
Assessment
This skill appears to do what it claims, but take these precautions before installing: - Be careful what you put in the shared directory — there is no authentication. Do not store sensitive files there. - The server binds to 0.0.0.0 by default (all interfaces). If the host has a public-facing interface or is on an untrusted network, restrict access with a firewall or change MEDIA_ROOT/port and network rules. Consider binding to 127.0.0.1 and using an SSH tunnel for remote access if you need secure access. - The systemd user service runs as your user and will restart automatically; enabling lingering (to survive logouts/reboots) requires sudo and increases persistence—only enable it if you understand the implications. - The SERVICE unit takes MEDIA_ROOT as provided; do not set MEDIA_ROOT to a broad path like / or other sensitive system locations. - Inspect the service file ($HOME/.config/systemd/user/media-server.service) and the server script before enabling to confirm the configured MEDIA_ROOT and port. If you accept those trade-offs, the skill is coherent and reasonable for sharing non-sensitive media on a trusted LAN.

Like a lobster shell, security has layers — review code before you run it.

Current versionv1.0.0
Download zip
latestvk97b6ahsmpgg26gpw3yfm5e3g180t07a

License

MIT-0
Free to use, modify, and redistribute. No attribution required.

SKILL.md

LAN Media Server

Lightweight HTTP file server for sharing agent-generated media (screenshots, images, documents) with users on the local network.

Why

Many AI assistant channels (webchat, CLI, SSH) can't display inline images. This skill solves that by serving files over HTTP on your LAN — drop a file, send a link.

Quick Start

bash scripts/setup.sh

This creates the shared directory, installs the server script, creates a systemd user service, and starts it.

Default config:

  • Port: 18801
  • Serve directory: $HOME/projects/shared-media
  • Accessible at: http://<LAN_IP>:18801/<filename>

Override with environment variables:

MEDIA_PORT=9090 MEDIA_ROOT=/tmp/media bash scripts/setup.sh

Usage Pattern

When you need to show an image or file to the user:

  1. Save/copy the file to the shared media directory
  2. Send the user a link: http://<server-LAN-IP>:<port>/<filename>

Example for browser screenshots:

cp /path/to/screenshot.jpg ~/projects/shared-media/my-screenshot.jpg
# Then send: http://192.168.1.91:18801/my-screenshot.jpg

Use descriptive filenames — the directory is flat and user-visible.

Management

# Check status
systemctl --user status media-server

# Restart
systemctl --user restart media-server

# View logs
journalctl --user -u media-server -f

# Stop and disable
systemctl --user stop media-server
systemctl --user disable media-server

Security Notes

  • Serves files only on LAN (0.0.0.0 but typically behind NAT)
  • No authentication — don't put sensitive files in the shared directory
  • Path traversal is blocked (files must be under MEDIA_ROOT)
  • No directory listing — must know the exact filename

Files

3 total
Select a file
Select a file to preview.

Comments

Loading comments…