{"skill":{"slug":"lan-media-server","displayName":"LAN Media Server","summary":"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.","description":"---\nname: lan-media-server\ndescription: 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.\n---\n\n# LAN Media Server\n\nLightweight HTTP file server for sharing agent-generated media (screenshots, images, documents) with users on the local network.\n\n## Why\n\nMany 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.\n\n## Quick Start\n\n```bash\nbash scripts/setup.sh\n```\n\nThis creates the shared directory, installs the server script, creates a systemd user service, and starts it.\n\n**Default config:**\n- Port: `18801`\n- Serve directory: `$HOME/projects/shared-media`\n- Accessible at: `http://<LAN_IP>:18801/<filename>`\n\nOverride with environment variables:\n```bash\nMEDIA_PORT=9090 MEDIA_ROOT=/tmp/media bash scripts/setup.sh\n```\n\n## Usage Pattern\n\nWhen you need to show an image or file to the user:\n\n1. Save/copy the file to the shared media directory\n2. Send the user a link: `http://<server-LAN-IP>:<port>/<filename>`\n\nExample for browser screenshots:\n```bash\ncp /path/to/screenshot.jpg ~/projects/shared-media/my-screenshot.jpg\n# Then send: http://192.168.1.91:18801/my-screenshot.jpg\n```\n\nUse descriptive filenames — the directory is flat and user-visible.\n\n## Management\n\n```bash\n# Check status\nsystemctl --user status media-server\n\n# Restart\nsystemctl --user restart media-server\n\n# View logs\njournalctl --user -u media-server -f\n\n# Stop and disable\nsystemctl --user stop media-server\nsystemctl --user disable media-server\n```\n\n## Security Notes\n\n- Serves files only on LAN (0.0.0.0 but typically behind NAT)\n- No authentication — don't put sensitive files in the shared directory\n- Path traversal is blocked (files must be under MEDIA_ROOT)\n- No directory listing — must know the exact filename\n","tags":{"latest":"1.0.0"},"stats":{"comments":0,"downloads":1571,"installsAllTime":4,"installsCurrent":4,"stars":0,"versions":1},"createdAt":1770648434763,"updatedAt":1778486231449},"latestVersion":{"version":"1.0.0","createdAt":1770648434763,"changelog":"lan-media-server 1.0.0\n\n- Initial release of a lightweight HTTP server to share agent-generated images, screenshots, and files over local network.\n- Includes setup script for installation and automatic systemd user service management.\n- Default configuration serves files from `$HOME/projects/shared-media` on port `18801`; customizable via environment variables.\n- Simple usage instructions: drop files in the shared directory, send a network-accessible link to users.\n- Focus on ease-of-use for channels that can’t display media inline, with built-in security features (LAN-only, path traversal prevention, no directory listing).","license":null},"metadata":null,"owner":{"handle":"nagellack5c","userId":"s17ekpadydtaatdfh6ydaqwyv18842j1","displayName":"nagellack5C","image":"https://avatars.githubusercontent.com/u/18439105?v=4"},"moderation":null}