File Inbox
v1.0.0Bidirectional file management system for OpenClaw workspaces. Organizes, indexes, and retrieves files exchanged with users via any channel. Use when: a user...
Like a lobster shell, security has layers — review code before you run it.
File Inbox
Manage all files exchanged with users in inbox/ with a human-readable INDEX.md.
Inbound = files received from user. Outbound = files generated by agent.
Setup
Run once to initialize the directory structure:
bash skills/file-inbox/scripts/init_inbox.sh
Creates inbox/, subdirectories, inbox/INDEX.md, and inbox/.meta.json.
Idempotent — safe to re-run.
File Registration Workflow
When the user sends a file (inbound)
- Determine the file's current path in workspace.
- Run the registration script:
python3 skills/file-inbox/scripts/register_file.py \ --path <filepath> \ --direction in \ --sender "<name or channel>" \ --tags "#tag1 #tag2" \ --notes "Brief context" - Script moves file to
inbox/inbound/YYYY-MM/and updates INDEX.md. - Confirm the assigned ID to the user (e.g., "Saved as F-007").
When the agent generates a file (outbound)
- Save the file to its destination first, then register:
python3 skills/file-inbox/scripts/register_file.py \ --path <filepath> \ --direction out \ --dest "<recipient name or channel>" \ --tags "#tag1 #tag2" \ --notes "What this file contains" - Script copies file to
inbox/outbound/YYYY-MM/and updates INDEX.md.
Auto-tagging
Tags are auto-assigned from file extension before the script runs. You may append additional context tags. See tagging-guide.md.
File Search & Retrieval
# Search by tag
python3 skills/file-inbox/scripts/search_inbox.py --tag research
# Search by file type
python3 skills/file-inbox/scripts/search_inbox.py --type pdf
# Search by direction
python3 skills/file-inbox/scripts/search_inbox.py --direction in
# Search by date range
python3 skills/file-inbox/scripts/search_inbox.py --date-from 2026-04-01 --date-to 2026-04-30
# Free-text search (matches ID, filename, notes, tags, sender)
python3 skills/file-inbox/scripts/search_inbox.py --query "논문"
# Combine filters
python3 skills/file-inbox/scripts/search_inbox.py --direction in --type csv --query "실험"
For quick lookups, read inbox/INDEX.md directly — it's a markdown table, grep-friendly.
INDEX.md Structure
# File Inbox
> Total: N files | Inbound: N | Outbound: N
> Last updated: YYYY-MM-DD
## Recent Files
| ID | Direction | Filename | Type | Tags | Sender/Dest | Date | Notes |
|----|-----------|----------|------|------|-------------|------|-------|
| F-007 | ⬇️ in | report.pdf | pdf | #research #논문 | Kim | 2026-04-11 | IEEE revision |
| F-006 | ⬆️ out | results.csv | csv | #experiment | → Kim | 2026-04-10 | Phase 2 |
- Rows are sorted newest-first.
- Keep the 50 most recent rows inline; older entries remain in the archive note at the bottom.
Inbox Statistics
python3 skills/file-inbox/scripts/inbox_stats.py
Shows: total counts, breakdown by type and direction, recent activity, storage size.
Maintenance
- Orphan check: Files in
inbox/not listed in INDEX.md are orphans. Register or remove them. - Old file cleanup: Files older than 90 days may be archived. Ask user before moving.
- Index rebuild: If INDEX.md is corrupted, re-run
register_file.pyfor each file ininbox/.
Integration with Channels
See integration-guide.md for:
- Telegram file handling (document vs. photo messages)
- How to extract sender name from channel context
- Recommended AGENTS.md additions
Best Practices
- Register files immediately after receiving or generating them.
- Always include
--noteswith enough context to identify the file months later. - Use Korean tags naturally — the index is bilingual-ready.
- When the user asks for a file, search INDEX.md first before scanning the filesystem.
- Never delete registered files without user confirmation; use notes to mark as obsolete.
Comments
Loading comments...
