{"_id":"@aman_asmuei/achannel","_rev":"5-0bb00aafe896598e8aa2d08c4abfeb15","name":"@aman_asmuei/achannel","dist-tags":{"latest":"0.3.1"},"versions":{"0.1.0":{"name":"@aman_asmuei/achannel","version":"0.1.0","keywords":["ai","companion","telegram","discord","whatsapp","webhook","channel","llm","anthropic","openai","ollama"],"author":{"name":"Aman Asmuei"},"license":"MIT","_id":"@aman_asmuei/achannel@0.1.0","maintainers":[{"name":"aman_asmuei","email":"amanasmuei@gmail.com"}],"homepage":"https://github.com/amanasmuei/achannel#readme","bugs":{"url":"https://github.com/amanasmuei/achannel/issues"},"bin":{"achannel":"bin/achannel.js"},"dist":{"shasum":"958c1e33703291c0d15936198147f095a52ad3b0","tarball":"https://registry.npmjs.org/@aman_asmuei/achannel/-/achannel-0.1.0.tgz","fileCount":11,"integrity":"sha512-t0RO2DhJjr6kpP1taKdXudKFOExAp8wO4BqCXMtwKLvkUEEc2yV20S+OX7Duwwait70KBEro1vOjX1d1GFMhDw==","signatures":[{"sig":"MEUCIQDezZFNZRXynDWHJdRv0lqetxPGez4NZ6yNtmozT9c+GAIgB40XIGemQ57d2xnbw/SjhAJ63THqk69nEaQ4QnLer5I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24037},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"1b8d05c3755c078075459b03ea64afccf882efa9","scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"aman_asmuei","email":"amanasmuei@gmail.com"},"repository":{"url":"git+https://github.com/amanasmuei/achannel.git","type":"git"},"_npmVersion":"10.8.2","description":"The portable channel layer for AI companions — Telegram, Discord, WhatsApp, webhooks","directories":{},"_nodeVersion":"20.20.1","dependencies":{"openai":"^4.80.0","commander":"^13.1.0","discord.js":"^14.16.0","picocolors":"^1.1.1","@clack/prompts":"^0.9.1","@anthropic-ai/sdk":"^0.39.0","node-telegram-bot-api":"^0.66.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/node-telegram-bot-api":"^0.64.0"},"_npmOperationalInternal":{"tmp":"tmp/achannel_0.1.0_1774238927263_0.4227294049415835","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@aman_asmuei/achannel","version":"0.1.1","keywords":["ai","companion","telegram","discord","whatsapp","webhook","channel","llm","anthropic","openai","ollama"],"author":{"name":"Aman Asmuei"},"license":"MIT","_id":"@aman_asmuei/achannel@0.1.1","maintainers":[{"name":"aman_asmuei","email":"amanasmuei@gmail.com"}],"homepage":"https://github.com/amanasmuei/achannel#readme","bugs":{"url":"https://github.com/amanasmuei/achannel/issues"},"bin":{"achannel":"bin/achannel.js"},"dist":{"shasum":"2dc0e4a4fc6d4257eb49a2d3f27fbf08c17a078d","tarball":"https://registry.npmjs.org/@aman_asmuei/achannel/-/achannel-0.1.1.tgz","fileCount":11,"integrity":"sha512-eFEI8g1vcEH8qkL5vgsSzCNggiklVlY+zEsKThGnRAZ+p/95Jog69UjJ9RJdBbqb/MansLh1kHjYpKTs3tgbEQ==","signatures":[{"sig":"MEUCIQDitX9D0cWLGA5yvXMG5geEQ9f9x5dFiJwSFfinY/zobAIgEhWsYy6jZx7lqk8Ib9fyzoJ2Y8sw1TajzSDNZu0t7aQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26300},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"68a5849541362823fc0c7c215ba3bacae95e35d6","scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"aman_asmuei","email":"amanasmuei@gmail.com"},"repository":{"url":"git+https://github.com/amanasmuei/achannel.git","type":"git"},"_npmVersion":"10.8.2","description":"The portable channel layer for AI companions — Telegram, Discord, WhatsApp, webhooks","directories":{},"_nodeVersion":"20.20.1","dependencies":{"openai":"^4.80.0","commander":"^13.1.0","discord.js":"^14.16.0","picocolors":"^1.1.1","@clack/prompts":"^0.9.1","@anthropic-ai/sdk":"^0.39.0","node-telegram-bot-api":"^0.66.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/node-telegram-bot-api":"^0.64.0"},"_npmOperationalInternal":{"tmp":"tmp/achannel_0.1.1_1774240438562_0.28407695681623846","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@aman_asmuei/achannel","version":"0.2.0","keywords":["ai","companion","telegram","discord","whatsapp","webhook","channel","llm","anthropic","openai","ollama"],"author":{"name":"Aman Asmuei"},"license":"MIT","_id":"@aman_asmuei/achannel@0.2.0","maintainers":[{"name":"aman_asmuei","email":"amanasmuei@gmail.com"}],"homepage":"https://github.com/amanasmuei/achannel#readme","bugs":{"url":"https://github.com/amanasmuei/achannel/issues"},"bin":{"achannel":"bin/achannel.js"},"dist":{"shasum":"4f848caffc47f62a05c73617a1bf55f89067c3a0","tarball":"https://registry.npmjs.org/@aman_asmuei/achannel/-/achannel-0.2.0.tgz","fileCount":11,"integrity":"sha512-Jrk0utmTXeaZs26ydoy0rjFt7B8gWSfjGAgjPPC+tUgg2LxncEILPpCzq+yus2Eatkko0JBYqRvfmFw45BJkVg==","signatures":[{"sig":"MEQCIFrk3Al5Vf5vrf7cwXzcjmYbMxHzsExHhaKRdoIGNMg7AiA+zimicP68cM2y2VF24K++hYcWrEicBa0Q/9V+Z0bQfA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30366},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"cb4e39829098536b959c50504b0d6129c20555a5","scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"aman_asmuei","email":"amanasmuei@gmail.com"},"repository":{"url":"git+https://github.com/amanasmuei/achannel.git","type":"git"},"_npmVersion":"10.8.2","description":"The portable channel layer for AI companions — Telegram, Discord, WhatsApp, webhooks","directories":{},"_nodeVersion":"20.20.1","dependencies":{"openai":"^4.80.0","commander":"^13.1.0","discord.js":"^14.16.0","picocolors":"^1.1.1","@clack/prompts":"^0.9.1","@anthropic-ai/sdk":"^0.39.0","node-telegram-bot-api":"^0.66.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/node-telegram-bot-api":"^0.64.0"},"_npmOperationalInternal":{"tmp":"tmp/achannel_0.2.0_1774240839012_0.693497119904535","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@aman_asmuei/achannel","version":"0.3.0","keywords":["ai","companion","telegram","discord","whatsapp","webhook","channel","llm","anthropic","openai","ollama"],"author":{"name":"Aman Asmuei"},"license":"MIT","_id":"@aman_asmuei/achannel@0.3.0","maintainers":[{"name":"aman_asmuei","email":"amanasmuei@gmail.com"}],"homepage":"https://github.com/amanasmuei/achannel#readme","bugs":{"url":"https://github.com/amanasmuei/achannel/issues"},"bin":{"achannel":"bin/achannel.js"},"dist":{"shasum":"65c26e96e6898b0d592b2662d0516e7ffde80902","tarball":"https://registry.npmjs.org/@aman_asmuei/achannel/-/achannel-0.3.0.tgz","fileCount":14,"integrity":"sha512-MmBY7wOvJbbMacLC+ddg5eLlUatmsQ6j4mFcHUrGqRw7D5OwwD4RB7avKjdZa9oR9vXrX8MDkjtoShJboZQXWQ==","signatures":[{"sig":"MEUCIFiFDhO1ZaETH9Zow52ss6vKbVHj+WQP+9eAULeq3lnmAiEAkBqpw+MH47Jvrto/sXPCE7uW38yl32u0P9pJu33exGQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":68489},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"7a909605bbababd6337b2b9c1f624b721f22261f","scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"aman_asmuei","email":"amanasmuei@gmail.com"},"repository":{"url":"git+https://github.com/amanasmuei/achannel.git","type":"git"},"_npmVersion":"10.9.4","description":"The portable channel layer for AI companions — Telegram, Discord, WhatsApp, webhooks","directories":{},"_nodeVersion":"22.22.1","dependencies":{"openai":"^4.80.0","commander":"^13.1.0","discord.js":"^14.16.0","picocolors":"^1.1.1","@clack/prompts":"^0.9.1","@anthropic-ai/sdk":"^0.39.0","node-telegram-bot-api":"^0.66.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/node-telegram-bot-api":"^0.64.0"},"_npmOperationalInternal":{"tmp":"tmp/achannel_0.3.0_1774670961704_0.11227915427932134","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@aman_asmuei/achannel","version":"0.3.1","description":"The portable channel layer for AI companions — Telegram, Discord, WhatsApp, webhooks","type":"module","bin":{"achannel":"bin/achannel.js"},"main":"./dist/index.js","scripts":{"build":"tsup","lint":"tsc --noEmit","test":"vitest run","prepublishOnly":"npm run build"},"dependencies":{"@anthropic-ai/sdk":"^0.39.0","@clack/prompts":"^0.9.1","@modelcontextprotocol/sdk":"^1.27.1","commander":"^13.1.0","discord.js":"^14.16.0","node-telegram-bot-api":"^0.66.0","openai":"^4.80.0","picocolors":"^1.1.1"},"devDependencies":{"@types/node":"^22.0.0","@types/node-telegram-bot-api":"^0.64.0","tsup":"^8.4.0","typescript":"^5.7.0","vitest":"^3.0.0"},"keywords":["ai","companion","telegram","discord","whatsapp","webhook","channel","llm","anthropic","openai","ollama"],"author":{"name":"Aman Asmuei"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/amanasmuei/achannel.git"},"_id":"@aman_asmuei/achannel@0.3.1","gitHead":"c3d1c2287700f1de2db0bb9d1a46beaca9003e96","types":"./dist/index.d.ts","bugs":{"url":"https://github.com/amanasmuei/achannel/issues"},"homepage":"https://github.com/amanasmuei/achannel#readme","_nodeVersion":"22.22.1","_npmVersion":"10.9.4","dist":{"integrity":"sha512-G6hyDqqvwjItpraBt46/66uvWh6nYvP+/YKb2mEi5hSrDt6LayLFV7TAcVGPW+tnIgZ3YXUrmWCeurFtT4dOTA==","shasum":"887d56961221485b3eff0d4b1560a04d2c54f225","tarball":"https://registry.npmjs.org/@aman_asmuei/achannel/-/achannel-0.3.1.tgz","fileCount":14,"unpackedSize":69416,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDK3VBaSYOZ6wGmdI1jUCKVycz5LJSXR7Pv1tBf/NIO2wIhAMQICvmCiR6B+uEXWWuZbP3GBgbef6LspSmhtEH9/RxO"}]},"_npmUser":{"name":"aman_asmuei","email":"amanasmuei@gmail.com"},"directories":{},"maintainers":[{"name":"aman_asmuei","email":"amanasmuei@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/achannel_0.3.1_1774744808641_0.488120385932308"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-23T04:08:47.136Z","modified":"2026-03-29T00:40:08.919Z","0.1.0":"2026-03-23T04:08:47.429Z","0.1.1":"2026-03-23T04:33:58.689Z","0.2.0":"2026-03-23T04:40:39.177Z","0.3.0":"2026-03-28T04:09:21.917Z","0.3.1":"2026-03-29T00:40:08.798Z"},"bugs":{"url":"https://github.com/amanasmuei/achannel/issues"},"author":{"name":"Aman Asmuei"},"license":"MIT","homepage":"https://github.com/amanasmuei/achannel#readme","keywords":["ai","companion","telegram","discord","whatsapp","webhook","channel","llm","anthropic","openai","ollama"],"repository":{"type":"git","url":"git+https://github.com/amanasmuei/achannel.git"},"description":"The portable channel layer for AI companions — Telegram, Discord, WhatsApp, webhooks","maintainers":[{"name":"aman_asmuei","email":"amanasmuei@gmail.com"}],"readme":"<div align=\"center\">\n\n<br>\n\n<picture>\n  <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://img.shields.io/badge/achannel-channel_layer-white?style=for-the-badge&labelColor=0d1117&color=58a6ff\">\n  <img alt=\"achannel\" src=\"https://img.shields.io/badge/achannel-channel_layer-black?style=for-the-badge&labelColor=f6f8fa&color=24292f\">\n</picture>\n\n### The portable channel layer for AI companions.\n\nConnect your AI identity to Telegram, Discord, WhatsApp, and webhooks — with full ecosystem context in every message.\n\n<br>\n\n[![npm](https://img.shields.io/npm/v/@aman_asmuei/achannel?style=flat-square&color=cb3837)](https://www.npmjs.com/package/@aman_asmuei/achannel)\n[![CI](https://img.shields.io/github/actions/workflow/status/amanasmuei/achannel/ci.yml?style=flat-square&label=tests)](https://github.com/amanasmuei/achannel/actions)\n[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square)](LICENSE)\n[![Node](https://img.shields.io/badge/node-%3E%3D18-brightgreen?style=flat-square)](https://nodejs.org)\n[![aman](https://img.shields.io/badge/part_of-aman_ecosystem-ff6b35.svg?style=flat-square)](https://github.com/amanasmuei/aman)\n\n[Quick Start](#quick-start) · [Channels](#channels) · [LLM Providers](#llm-providers) · [Deploy](#deploy-on-raspberry-pi) · [Ecosystem](#the-ecosystem)\n\n</div>\n\n---\n\n## The Problem\n\nYour AI companion lives in a terminal. But you're on Telegram, Discord, and other platforms all day. There's no bridge between your ecosystem and the platforms where you actually communicate.\n\n## The Solution\n\n**achannel** connects your AI identity to messaging platforms. Full ecosystem context — identity, tools, workflows, rules, skills — in every response.\n\n```bash\nnpx @aman_asmuei/achannel add telegram\nnpx @aman_asmuei/achannel serve\n```\n\n> **Same AI. Same personality. Same rules. Any platform.**\n\n---\n\n## Quick Start\n\n```bash\n# 1. Set up your AI identity first\nnpx @aman_asmuei/aman\n\n# 2. Add a channel\nnpx @aman_asmuei/achannel add telegram\n\n# 3. Start serving\nnpx @aman_asmuei/achannel serve\n```\n\n---\n\n## How It Works\n\n```\n  Browser  ──┐\n  Telegram ──┤\n  Discord  ──┼──> achannel ──> LLM (with full ecosystem context)\n  Webhook  ──┘\n```\n\n1. A message arrives on any channel\n2. achannel loads the ecosystem (identity, tools, workflows, guardrails, skills)\n3. Sends the message + ecosystem context to your chosen LLM\n4. Returns the response through the same channel\n\n---\n\n## Commands\n\n| Command | What it does |\n|:--------|:-------------|\n| `achannel add <channel>` | Set up a channel (telegram, discord, whatsapp, webhook) |\n| `achannel remove <channel>` | Remove a channel |\n| `achannel list` | List configured channels |\n| `achannel serve` | Start all channels |\n| `achannel doctor` | Health check |\n\n---\n\n## Web UI (New in v0.3.0)\n\n`achannel serve` now includes a full web dashboard at `http://localhost:3000`:\n\n- **Chat** with SSE streaming responses\n- **Plans** — view active plans with progress bars\n- **Profiles** — see available agent profiles\n- **Teams** — view agent teams\n- **Memory** — search your AI's memory\n- **Settings** — provider, model, ecosystem status\n\nWorks on phone, tablet, and desktop. Dark and light theme.\n\n```bash\nachannel serve    # → open http://localhost:3000\n\n# Or via Docker\ndocker compose up -d    # → same URL\n```\n\n**REST API endpoints:**\n\n| Endpoint | Description |\n|:---|:---|\n| `GET /chat/stream` | SSE streaming chat |\n| `GET /api/status` | Ecosystem status |\n| `GET /api/plans` | Plan list |\n| `GET /api/profiles` | Available profiles |\n| `GET /api/teams` | Team list |\n| `GET /api/memory?q=` | Memory search |\n| `POST /chat` | JSON chat |\n| `DELETE /chat` | Clear session |\n\n---\n\n## Channels\n\n<details>\n<summary><strong>Telegram</strong></summary>\n\nSet up a bot via [@BotFather](https://t.me/BotFather), get the token, then:\n\n```bash\nachannel add telegram\n```\n\n**Features:**\n- Personal mode (only responds to you) or public mode\n- Conversation memory (last 20 messages per chat)\n- `/clear` to reset conversation\n- Auto-splits long messages (4000 char limit)\n\n</details>\n\n<details>\n<summary><strong>Discord</strong></summary>\n\nCreate a bot at [Discord Developer Portal](https://discord.com/developers/applications), get the token, then:\n\n```bash\nachannel add discord\n```\n\n**Features:**\n- Responds when @mentioned or in DMs\n- Per-channel conversation memory\n- Auto-splits long messages (1900 char limit)\n\n</details>\n\n<details>\n<summary><strong>Webhook</strong></summary>\n\nHTTP endpoint for custom integrations:\n\n```bash\nachannel add webhook\n```\n\n**Endpoints:**\n\n| Method | Path | Description |\n|:-------|:-----|:------------|\n| `GET` | `/status` | Health check |\n| `POST` | `/chat` | Send a message |\n\n```bash\ncurl -X POST http://localhost:3000/chat \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"message\": \"Hello!\"}'\n```\n\n</details>\n\n---\n\n## LLM Providers\n\n| Provider | Setup | Cost |\n|:---------|:------|:-----|\n| **Anthropic** (Claude) | API key from [console.anthropic.com](https://console.anthropic.com) | Pay per token |\n| **OpenAI** (GPT) | API key from [platform.openai.com](https://platform.openai.com) | Pay per token |\n| **Ollama** (local) | Install [Ollama](https://ollama.ai), pull a model | Free |\n\n---\n\n## Deploy on Raspberry Pi\n\nRun your AI companion locally, fully offline:\n\n```bash\n# 1. Install Node.js and Ollama on your Pi\n# 2. Pull a small model\nollama pull llama3.2\n\n# 3. Set up your identity\nnpx @aman_asmuei/aman\n\n# 4. Add Telegram and choose Ollama as provider\nnpx @aman_asmuei/achannel add telegram\n\n# 5. Start\nnpx @aman_asmuei/achannel serve\n```\n\n> **Your AI is now on Telegram, running locally, fully offline.**\n\n---\n\n## Configuration\n\nAll config lives in `~/.achannel/`:\n\n| File | Purpose |\n|:-----|:--------|\n| `config.json` | Channel credentials and settings |\n| `channels.md` | Human-readable summary of configured channels |\n\n---\n\n## The Ecosystem\n\n```\naman\n├── acore      → identity    → who your AI IS\n├── amem       → memory      → what your AI KNOWS\n├── akit       → tools       → what your AI CAN DO\n├── aflow      → workflows   → HOW your AI works\n├── arules     → guardrails  → what your AI WON'T do\n├── askill     → skills      → what your AI MASTERS\n├── aeval      → evaluation  → how GOOD your AI is\n└── achannel   → channels    → WHERE your AI lives  ← YOU ARE HERE\n```\n\n| Layer | Package | What it does |\n|:------|:--------|:-------------|\n| Identity | [acore](https://github.com/amanasmuei/acore) | Personality, values, relationship memory |\n| Memory | [amem](https://github.com/amanasmuei/amem) | Automated knowledge storage (MCP) |\n| Tools | [akit](https://github.com/amanasmuei/akit) | 15 portable AI tools (MCP + manual fallback) |\n| Workflows | [aflow](https://github.com/amanasmuei/aflow) | Reusable AI workflows |\n| Guardrails | [arules](https://github.com/amanasmuei/arules) | Safety boundaries and permissions |\n| Skills | [askill](https://github.com/amanasmuei/askill) | Domain expertise |\n| Evaluation | [aeval](https://github.com/amanasmuei/aeval) | Relationship tracking |\n| **Unified** | **[aman](https://github.com/amanasmuei/aman)** | **One command to set up everything** |\n\n---\n\n## Contributing\n\nContributions welcome! Add channel adapters, improve platform support, or suggest features.\n\n## License\n\n[MIT](LICENSE)\n\n---\n\n<div align=\"center\">\n\n**One identity. Every platform. Your AI everywhere.**\n\n</div>\n","readmeFilename":"README.md"}