{"id":49110007,"url":"https://github.com/jerrettdavis/ainbox","last_synced_at":"2026-06-16T04:01:03.407Z","repository":{"id":351788409,"uuid":"1212500118","full_name":"JerrettDavis/AInbox","owner":"JerrettDavis","description":"Filesystem-based async mailbox runtime for coding agents, with a native Rust CLI and Python compatibility layer.","archived":false,"fork":false,"pushed_at":"2026-06-12T16:38:20.000Z","size":580,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-12T18:24:16.059Z","etag":null,"topics":["agents","cli","filesystem","mailbox","multi-agent","python","rust"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JerrettDavis.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-04-16T12:47:37.000Z","updated_at":"2026-06-02T18:40:44.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/JerrettDavis/AInbox","commit_stats":null,"previous_names":["jerrettdavis/ainbox"],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/JerrettDavis/AInbox","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JerrettDavis%2FAInbox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JerrettDavis%2FAInbox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JerrettDavis%2FAInbox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JerrettDavis%2FAInbox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JerrettDavis","download_url":"https://codeload.github.com/JerrettDavis/AInbox/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JerrettDavis%2FAInbox/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34390052,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-16T02:00:06.860Z","response_time":126,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agents","cli","filesystem","mailbox","multi-agent","python","rust"],"created_at":"2026-04-21T04:06:42.954Z","updated_at":"2026-06-16T04:01:03.401Z","avatar_url":"https://github.com/JerrettDavis.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AInbox – Filesystem-Based Async Mailbox for Coding Agents\r\n\r\nA minimal, cross-platform mailbox runtime with a **native Rust CLI** and a Python compatibility path for **decentralized agent communication** via structured markdown messages and a shared filesystem.\r\n\r\n**No broker. No orchestrator. Just files and conventions.**\r\n\r\n## Quick Start\r\n\r\n### Installation\r\n\r\n```bash\r\n# Linux/macOS installer (downloads the latest native release)\r\ncurl -fsSL https://raw.githubusercontent.com/JerrettDavis/AInbox/main/scripts/install.sh | bash\r\n\r\n# Windows installer (downloads the latest native release)\r\npowershell -ExecutionPolicy Bypass -Command \"irm https://raw.githubusercontent.com/JerrettDavis/AInbox/main/scripts/install.ps1 | iex\"\r\n\r\n# Native install from source\r\ncargo install --path .\r\n\r\n# Python compatibility install from the repo checkout\r\npip install -e .\r\n\r\n# Python compatibility install from GitHub\r\npip install git+https://github.com/JerrettDavis/AInbox.git\r\n```\r\n\r\nIf you already have an AInbox checkout locally, prefer the safe ensure helpers:\r\n\r\n```bash\r\n# Linux/macOS (source it so PATH updates stay in the current shell)\r\nsource ./scripts/ensure-mailbox.sh\r\n\r\n# Windows PowerShell\r\n.\\scripts\\ensure-mailbox.ps1\r\n```\r\n\r\nThe ensure helpers install the latest native release only when `mailbox` is missing and make the install directory available in the current session.\r\n\r\nVerify:\r\n```bash\r\nmailbox --version\r\n```\r\n\r\nPrebuilt native binaries are published through GitHub Releases for **Windows**, **macOS**, and **Linux**. The same packaged archives are also published to **GHCR** as OCI artifacts for package-registry consumers.\r\n\r\nOptional installer controls:\r\n\r\n```bash\r\n# install a specific release tag\r\nAINBOX_VERSION=vX.Y.Z curl -fsSL https://raw.githubusercontent.com/JerrettDavis/AInbox/main/scripts/install.sh | bash\r\n\r\n# install into a custom directory\r\nAINBOX_INSTALL_DIR=\"$HOME/bin\" bash scripts/install.sh\r\n```\r\n\r\n### Plugin Marketplace Installation\r\n\r\n**Claude Code**\r\n\r\n```bash\r\nclaude plugin marketplace add JerrettDavis/AInbox\r\nclaude plugin install ainbox@ainbox-marketplace\r\nclaude plugin install agent-poll@ainbox-marketplace\r\nclaude plugin install elections@ainbox-marketplace\r\n```\r\n\r\nWhen the Claude plugin is enabled, bundled hooks do a best-effort silent bootstrap of the native `mailbox` binary on session start and before Bash tool calls. If the environment cannot support that automatic install, use the local ensure helpers instead.\r\n\r\n**GitHub Copilot CLI**\r\n\r\n```bash\r\ncopilot plugin marketplace add JerrettDavis/AInbox\r\ncopilot plugin install ainbox@ainbox-marketplace\r\ncopilot plugin install agent-poll@ainbox-marketplace\r\ncopilot plugin install elections@ainbox-marketplace\r\n```\r\n\r\nThe marketplace installs the AInbox command/skill plugin metadata. Claude Code can now auto-bootstrap the native `mailbox` binary through plugin hooks when possible; otherwise use the native installers or local ensure helpers above so `mailbox` is available on `PATH`.\r\n\r\nOnce the native CLI is available, you can bootstrap supported global agent integrations in one step:\r\n\r\n```bash\r\nmailbox init -g\r\n```\r\n\r\n`mailbox init` now does two local setup steps:\r\n\r\n- creates the local `.mailbox/` folders\r\n- seeds project mailbox instructions in `.claude/MAILBOX.md` and `.agents/MAILBOX.md`, then prepends `CLAUDE.md` and `AGENTS.md` with one-time imports\r\n\r\n`mailbox init -g` keeps that local setup and also seeds user-scoped instruction files in `~/.claude/` and `~/.agents/` before updating-or-installing the AInbox marketplace/plugins for supported agent CLIs already present on `PATH` (currently Claude Code and GitHub Copilot CLI).\r\n\r\nAdvanced consumers can also pull packaged archives from GHCR with OCI tooling using package names like `ghcr.io/jerrettdavis/ainbox-mailbox-linux-x86_64:vX.Y.Z`.\r\n\r\nThe core `ainbox` plugin also ships two mailbox-aware subagents:\r\n\r\n- `orchestrator` - delegates work and synthesizes results through subagents and mailbox coordination\r\n- `project-manager` - active leader that contributes directly while keeping delegation and coordination flowing through AInbox\r\n\r\nYou can force mailbox-based orchestration explicitly:\r\n\r\n```bash\r\n# Claude Code: launch directly into the AInbox orchestrator\r\nclaude --agent ainbox:orchestrator \"Coordinate this task through mailbox-aware subagents and synthesize the result.\"\r\n\r\n# Claude Code: use the active leader variant instead\r\nclaude --agent ainbox:project-manager \"Lead this task with mailbox coordination and delegate bounded work.\"\r\n\r\n# GitHub Copilot CLI: launch the CLI, then select the AInbox subagent\r\ncopilot\r\n/agent\r\n# choose ainbox:orchestrator or ainbox:project-manager, then give the task prompt\r\n```\r\n\r\n### Headless Workflow Smoke Test\r\n\r\nTo validate a local mailbox workflow end-to-end, including election handling, mailbox handoffs, and Claude-driven proposer/reviewer collaboration, run:\r\n\r\n```powershell\r\n.\\scripts\\run-headless-mailbox-e2e.ps1\r\n```\r\n\r\nThe script creates an isolated temp workspace, runs the election and mailbox traffic directly through the CLI, uses `claude -p` to generate the proposer/reviewer/orchestrator content, and writes a final `report.json` path to stdout when the run completes.\r\n\r\n### Consensus Gates and Distributed Motions\r\n\r\nUse motions when the cluster must pause, acknowledge a redirect, or refuse to proceed until the required votes arrive.\r\n\r\n```bash\r\n# Create a blocking gate for the current cluster step\r\nmailbox create-motion --title \"Pause deploy\" \\\r\n  --participant orchestrator --participant reviewer --participant worker \\\r\n  --scope deploy \\\r\n  --description \"Stop current work, report status, and do not continue until this motion passes.\"\r\n\r\n# Vote yes or no\r\nmailbox vote-motion --id \u003cmotion-id\u003e --vote yes --reason \"Status reported\"\r\n\r\n# Block until the motion resolves\r\nmailbox wait-motion --id \u003cmotion-id\u003e\r\n```\r\n\r\nFor a local scripted example, run:\r\n\r\n```powershell\r\n.\\scripts\\run-motion-gate-demo.ps1\r\n```\r\n\r\n### Basic Usage\r\n\r\n```bash\r\n# Initialize local mailbox\r\nmailbox init\r\n\r\n# Initialize local mailbox, seed MAILBOX.md imports, and refresh supported global agent integrations\r\nmailbox init -g\r\n\r\n# Send a message to another agent\r\nmailbox send --to reviewer-agent --subject \"PR ready for review\" --body \"Please check my implementation.\"\r\n\r\n# Or set an optional expiry time\r\nmailbox send --to reviewer-agent --subject \"Time-sensitive review\" --body \"Please respond before the deploy window closes.\" --expires-at 2026-04-21T06:00:00Z\r\n\r\n# Or pipe the body\r\necho \"Review this PR\" | mailbox send --to reviewer-agent --subject \"Code review needed\"\r\n\r\n# List inbox\r\nmailbox list\r\n\r\n# Read a message\r\nmailbox read --id \u003cmessage-id\u003e\r\n\r\n# Sync with shared mailbox (push local outbox, pull incoming)\r\nmailbox sync\r\n```\r\n\r\n## Architecture\r\n\r\n### Mailbox Folders\r\n\r\n**Local (.mailbox/)**:\r\n- `inbox/` – Received messages\r\n- `outbox/` – Messages ready to send\r\n- `sent/` – Delivered messages\r\n- `archive/` – Read/processed messages\r\n- `draft/` – Local working memory and staged message drafts for active threads\r\n\r\n**Shared (~/.mailbox/shared/outbox)**:\r\n- Global exchange point for all agents\r\n\r\n### Message Format\r\n\r\nMessages are markdown files with YAML frontmatter:\r\n\r\n```markdown\r\n---\r\nid: abc123def456\r\nto: reviewer-agent\r\nfrom: worker-agent\r\nsubject: PR needs validation\r\nsent_at: 2026-04-15T22:31:00Z\r\nreceived_at: null\r\nread_at: null\r\ncorrelation_id: task-12345\r\n---\r\n\r\nI've completed the implementation. Please review and validate.\r\n\r\n- Worker\r\n```\r\n\r\n**Frontmatter Field Constraints**:\r\n- All string fields (id, to, from, subject, correlation_id) must be single-line\r\n- Embedded newlines in frontmatter fields are rejected during message creation to prevent parsing corruption\r\n- The message body (after the closing `---`) can contain multiple lines\r\n\r\n### Workflow\r\n\r\n1. **Send**: `mailbox send` → message in `.mailbox/outbox/`\r\n2. **Sync (push)**: `mailbox sync` → copy to `~/.mailbox/shared/outbox/`, move original to `.mailbox/sent/`\r\n3. **Sync (pull)**: `mailbox sync` → other agents pull from shared outbox into their `.mailbox/inbox/`\r\n4. **Read**: `mailbox read --id \u003cid\u003e` → message moved to `.mailbox/archive/`, `read_at` updated\r\n\r\n## Commands\r\n\r\n| Command | Purpose |\r\n| --- | --- |\r\n| `mailbox init` | Initialize local mailbox and seed project `MAILBOX.md` instructions for Claude/AGENTS flows |\r\n| `mailbox init -g` | Initialize local mailbox, seed project and user `MAILBOX.md` instructions, and install/update supported global agent integrations |\r\n| `mailbox send --to AGENT --subject \"...\" [--expires-at TIMESTAMP]` | Create and send message |\r\n| `mailbox list [--limit 10]` | List inbox messages (unread) |\r\n| `mailbox read [--id ID]` | Read message and archive |\r\n| `mailbox read --correlation-id THREAD_ID` | Read first message in thread |\r\n| `mailbox archive --id ID` | Archive a message |\r\n| `mailbox sync` | Push/pull messages |\r\n| `mailbox config --list` | Show configuration |\r\n| `mailbox help` | Show command help |\r\n| **Polls** | |\r\n| `mailbox create-poll --question \"...\" --option \"...\" [--option ...]` | Create a poll |\r\n| `mailbox list-polls [--status open\\|closed\\|all]` | List polls |\r\n| `mailbox show-poll --id POLL_ID` | Show poll details and results |\r\n| `mailbox vote-poll --id POLL_ID --option \"...\"` | Vote in a poll |\r\n| `mailbox close-poll --id POLL_ID` | Close a poll |\r\n| **Elections** | |\r\n| `mailbox create-election --role \"...\" --candidate \"...\" [--candidate ...]` | Create an election |\r\n| `mailbox list-elections [--status open\\|closed\\|all]` | List elections |\r\n| `mailbox show-election --id ELECTION_ID` | Show election details and results |\r\n| `mailbox vote-election --id ELECTION_ID --candidate \"...\"` | Vote in an election (cannot self-vote) |\r\n| `mailbox close-election --id ELECTION_ID` | Close an election |\r\n| **Motions / Gates** | |\r\n| `mailbox create-motion --title \"...\" --participant AGENT [--participant ...]` | Create a blocking or advisory cluster motion |\r\n| `mailbox list-motions [--status open\\|accepted\\|rejected\\|cancelled\\|all]` | List motions |\r\n| `mailbox show-motion --id MOTION_ID` | Show motion details and vote state |\r\n| `mailbox vote-motion --id MOTION_ID --vote yes\\|no [--reason \"...\"]` | Cast a yes/no vote on a motion |\r\n| `mailbox wait-motion --id MOTION_ID [--timeout-seconds N]` | Block until a motion resolves |\r\n| `mailbox close-motion --id MOTION_ID [--status cancelled\\|accepted\\|rejected]` | Force a motion into a terminal state |\r\n\r\nIf a message expires before it is processed, AInbox reroutes it as a normal mailbox message addressed to `dlq` with `message_type: expired` and the original markdown attached in the body. You can inspect those messages with the standard CLI by working as agent `dlq`.\r\n\r\n## Polls and Elections\r\n\r\nAInbox provides filesystem-backed polls and elections for agent consensus and role selection.\r\n\r\n### Polls\r\n\r\nCreate a poll to gather agent opinions:\r\n\r\n```bash\r\n# Create a poll\r\nmailbox create-poll --question \"What color?\" --option Red --option Blue --participant agent1 --participant agent2\r\n\r\n# Vote in the poll\r\nmailbox vote-poll --id \u003cpoll-id\u003e --option Red\r\n\r\n# View results\r\nmailbox show-poll --id \u003cpoll-id\u003e\r\n\r\n# Close poll\r\nmailbox close-poll --id \u003cpoll-id\u003e\r\n\r\n# List all polls\r\nmailbox list-polls\r\n```\r\n\r\n### Elections\r\n\r\nElect agents to roles (self-votes are prevented):\r\n\r\n```bash\r\n# Create an election\r\nmailbox create-election --role \"Lead Developer\" --candidate alice --candidate bob --candidate charlie\r\n\r\n# Vote in the election\r\nmailbox vote-election --id \u003celection-id\u003e --candidate alice\r\n\r\n# View results\r\nmailbox show-election --id \u003celection-id\u003e\r\n\r\n# Close election\r\nmailbox close-election --id \u003celection-id\u003e\r\n\r\n# List all elections\r\nmailbox list-elections\r\n```\r\n\r\n**Key features:**\r\n- **Filesystem-backed**: All poll/election state lives in shared filesystem (no server required)\r\n- **Public votes**: Vote tallies are visible to all participants\r\n- **No self-votes in elections**: Candidates cannot vote for themselves\r\n- **Participant notifications**: Creating a ballot with `--participant` sends mailbox notices automatically\r\n- **Status filtering**: List by `--status open`, `closed`, or `all`\r\n- **JSON output**: Use `--format json` for machine-readable results\r\n\r\n## Agent Identity\r\n\r\nAgent ID is resolved in order:\r\n\r\n1. `MAILBOX_AGENT_ID` environment variable\r\n2. `agent_id` in `.mailbox/config.yaml` (local)\r\n3. `agent_id` in `~/.mailbox/config.yaml` (global)\r\n4. Current directory name\r\n\r\nSet it once:\r\n```bash\r\nexport MAILBOX_AGENT_ID=my-agent\r\n# or\r\necho \"agent_id: my-agent\" \u003e ~/.mailbox/config.yaml\r\n```\r\n\r\n## Integration with Coding Assistants\r\n\r\n\r\n### Claude Code\r\n\r\nSee [CLAUDE.md](CLAUDE.md), `.claude-plugin/plugin.json`, and `.claude/commands/` for Claude-specific setup and plugin metadata.\r\n\r\nInstalled `ainbox` plugin users also get the `orchestrator` and `project-manager` subagents from `agents/`.\r\n\r\n#### Push channel (optional)\r\n\r\n**Requires: Claude Code v2.1.80+ and [Bun](https://bun.sh) on `PATH`.**\r\n\r\nThe channel is opt-in per session and is not enabled by default.\r\n\r\n**Activation paths:**\r\n\r\n- **Plugin install** (marketplace): install AInbox, then launch with the channel:\r\n  ```bash\r\n  /plugin install ainbox@ainbox-marketplace\r\n  claude --channels plugin:ainbox@ainbox-marketplace\r\n  ```\r\n- **Dev/local** (from the repo root — no plugin install needed):\r\n  ```bash\r\n  claude --dangerously-load-development-channels server:ainbox\r\n  ```\r\n\r\nIn both cases the channel starts `bun channel/server.ts` from the repo/plugin root.\r\n\r\n**Configure the channel** once it is running:\r\n```text\r\n/ainbox-channel-configure status\r\n/ainbox-channel-configure set-poll-interval 2000\r\n/ainbox-channel-configure enforce-allowlist on\r\n/ainbox-channel-configure set-allowlist add some-agent\r\n```\r\n\r\nThe channel surfaces incoming mail as `\u003cchannel source=\"ainbox\" event=\"received|sent|read\" ...\u003e` tags and exposes `reply`, `mark_read`, and `list_inbox` MCP tools. See `channel/README.md` for the full contract and trust model.\r\n\r\n**Trust note:** Mailbox messages and their metadata are untrusted input. Configure the optional allowlist (`/ainbox-channel-configure enforce-allowlist on`) if you don't trust everyone who can write to your shared outbox.\r\n\r\n### Copilot CLI\r\n\r\nSee [AGENTS.md](AGENTS.md), `.github/plugin/marketplace.json`, and `.github/plugin/plugin.json` for Copilot marketplace integration.\r\n\r\nThe same `ainbox` plugin package includes the `orchestrator` and `project-manager` agent definitions for marketplace installs.\r\n\r\n### Custom Agents\r\n\r\nWrapper scripts are provided:\r\n\r\n```bash\r\n# Linux/macOS\r\nbash scripts/mailbox.sh send --to agent-id --subject \"...\"\r\n\r\n# Windows (PowerShell)\r\npowershell scripts\\mailbox.ps1 send --to agent-id --subject \"...\"\r\n```\r\n\r\nOr simply use the `mailbox` command directly after installation.\r\n\r\n## Configuration\r\n\r\n**Local config** (`.mailbox/config.yaml`):\r\n```yaml\r\nagent_id: my-agent\r\nshared_mailbox_path: ~/shared-mailbox  # Optional: override default shared mailbox location\r\n```\r\n\r\n**Global config** (`~/.mailbox/config.yaml`):\r\n```yaml\r\nagent_id: default-agent\r\nshared_mailbox_path: ~/shared-mailbox  # Optional: override default shared mailbox location\r\n```\r\n\r\n**Environment variables**:\r\n- `MAILBOX_AGENT_ID` – Agent identity (overrides config)\r\n- `MAILBOX_SHARED` – Shared mailbox path (overrides config and default)\r\n\r\n## Use Cases\r\n\r\n- **Multi-agent workflows**: Agents coordinate without a central broker\r\n- **Task handoff**: Worker completes task → sends message → reviewer receives and processes\r\n- **Async coordination**: Agents poll at their own pace, no tight coupling\r\n- **Debugging**: All communication is in plain markdown files, fully inspectable\r\n\r\n## Roadmap\r\n\r\n**v0.1** (current):\r\n- Core messaging (send, read, sync)\r\n- Markdown + frontmatter format\r\n- File-based transport\r\n- CLI + wrapper scripts\r\n- **Polls for consensus**\r\n- **Elections for role selection**\r\n\r\n**v1.0**:\r\n- Pre-turn hooks for agent systems\r\n- Message search/indexing\r\n- Batch operations\r\n\r\n**v2.0**:\r\n- Real-time watchers\r\n- Optional message encryption\r\n- Broadcast messaging\r\n\r\n\r\n## For Developers\r\n\r\n### Structure\r\n\r\n```\r\nainbox/\r\n  __init__.py       # Package metadata\r\n  cli.py            # Command handlers\r\n  mailbox.py        # Core operations (send, sync, etc.)\r\n  message.py        # Message parsing/serialization\r\n  util.py           # Paths, IDs, timestamps\r\nsetup.py            # Package configuration\r\nscripts/            # Wrapper scripts (.sh, .ps1)\r\n```\r\n\r\n### Testing Locally\r\n\r\n```bash\r\n# Install in development mode\r\npip install -e .\r\n\r\n# Create two test agents\r\nMAILBOX_AGENT_ID=agent1 mailbox init\r\nmkdir test2 \u0026\u0026 cd test2\r\nMAILBOX_AGENT_ID=agent2 mailbox init\r\ncd ..\r\n\r\n# Send message from agent1 to agent2\r\nMAILBOX_AGENT_ID=agent1 mailbox send --to agent2 --subject \"Test\" --body \"Hello!\"\r\n\r\n# Sync (push from agent1)\r\nMAILBOX_AGENT_ID=agent1 mailbox sync\r\n\r\n# Sync (pull in agent2)\r\ncd test2\r\nMAILBOX_AGENT_ID=agent2 mailbox sync\r\nmailbox list\r\n\r\n# Read the message\r\nmailbox read --id \u003cid-from-list\u003e\r\n```\r\n\r\n### Design Principles\r\n\r\n- **Minimal dependencies**: Stdlib only where possible\r\n- **Cross-platform**: Windows, macOS, and Linux via native binaries, scripts, and compatibility paths\r\n- **Atomic writes**: Temp file + `os.replace()` for robustness\r\n- **Convention over config**: Standard folders, file naming, message schema\r\n- **Pluggable**: Works with any agent system via skills and scripts\r\n\r\n## License\r\n\r\nMIT\r\n\r\n## Contributing\r\n\r\nIssues and pull requests welcome. Keep it minimal and focused on the core mailbox functionality.\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjerrettdavis%2Fainbox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjerrettdavis%2Fainbox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjerrettdavis%2Fainbox/lists"}