{"slug": "show-hn-oss-framework-to-launch-instinct-like-imessage-assistants", "title": "Show HN: OSS framework to launch Instinct like iMessage assistants", "summary": "Flow released an open-source TypeScript framework that lets developers write tools and skills once and expose them as an MCP server, a plugin, a CLI and a messaging agent across Claude, ChatGPT, WhatsApp, iMessage, Telegram, SMS and custom apps. The framework requires Node 22.18 or later, is scaffolded with `npx @flow-engineer/flow new my-agent`, and includes a café example whose tools run in an MCP server, CLI and messaging agent without a model key; `npx @flow-engineer/flow link --channel telegram` (or `whatsapp`/`imessage` when available) signs in and sets up trial keys. Flow positions the release around chat-first product use, with authentication hooks, simulated conversation testing and deployment on the user's own infrastructure or Flow Cloud.", "body_md": "**Build once. Ship to every chat.**\n\nOne open-source TypeScript framework to bring your product to Claude, ChatGPT, the terminal, WhatsApp, iMessage, Telegram and your own app. Write your tools and skills once; use them as an MCP server, a plugin, a CLI and a messaging agent.\n\nWe're building Flow for a chat-first world: people should be able to use a product by asking for what they need, where they already chat. Moving a booking or placing an order should happen in the conversation—not end with a link to a form. Whether someone texts your business or asks their own assistant, the same product capabilities should be available to them.\n\n[Documentation](https://docs.flow.engineer/framework) · [Quickstart](https://docs.flow.engineer/framework/quickstart) · [For coding agents](https://docs.flow.engineer/agents) · [Website](https://flow.engineer)\n\n| Build | Reach | \n|---|---|\n| [MCP server](https://docs.flow.engineer/framework/mcp) | Claude, ChatGPT and other MCP clients | \n| [Plugin](https://docs.flow.engineer/plugins) | Hosts that load native skills and an MCP connection | \n| [CLI](https://docs.flow.engineer/cli) | People, scripts, Claude Code, Codex and other coding agents | \n| [Messaging agent](https://docs.flow.engineer/conversations) | WhatsApp, iMessage, Telegram, SMS and your own web or app chat | \n\nTools are typed TypeScript functions that call your APIs. Skills teach the workflows around them. Flow exposes the same capabilities through each interface, with authentication hooks for your users and room to customize the generated tools, commands and handlers.\n\nIn Claude and ChatGPT, the host's model uses your MCP tools. In messaging, Flow runs the conversation with your model, handling double texts, acknowledgements, background tools, channel rules, reminders, persistent history and the agent's own records. Start with whichever interface you need.\n\nNode 22.18 or later. Create a project from the café example:\n\n```\nnpx @flow-engineer/flow new my-agent --display-name \"My agent\"\ncd my-agent\nnpm install\n```\n\nThe starter includes the same tools in an MCP server, a CLI and a messaging agent.\n\nStart the server:\n\n```\nnpm run mcp\n```\n\nIt prints the MCP URL and a command to connect Claude Code. In another terminal, try the CLI:\n\n```\nnpm run cli -- --help\nnpm run cli -- menu --json\n```\n\nTo test any MCP server from the current chat, use `npx @flow-engineer/flow inspect <url> tools`\nwith the URL the server prints. `call`, `auth`, `resources` and `prompts` exercise its tools,\nsign-in and other capabilities as a host does, without requiring a CLI configuration.\n\nThese tool calls need no model key. To reach Claude or ChatGPT remotely, host the MCP server over\nHTTPS and connect it in the host. [MCP and sign-in](https://docs.flow.engineer/framework/mcp) · [Plugin packages](https://docs.flow.engineer/plugins)\n\n```\nnpx @flow-engineer/flow link --channel telegram\nnpm start\n```\n\n`link` signs in, sets up the trial keys and prints a phone link. Use `--channel whatsapp` or\n`--channel imessage` for those platforms when available. Open the playground URL from `npm start`\nto try the agent locally, then text it from your phone while it runs. You can also use your own\nmodel key and messaging provider. [Full setup and trial details](https://docs.flow.engineer/framework/quickstart)\n\n`flow new` includes coding-agent skills and an `AGENTS.md` pointing to them. Give Claude Code,\nCodex or another coding agent your product's codebase and tell it which interfaces to build.\nReplace the café tools with calls to your APIs and teach your workflows through skills.\n\nRead the [coding-agent guide](https://docs.flow.engineer/agents), or explore the [café example](https://github.com/flow-engineer/flow/blob/main/examples/cafe).\n\nCheck tools, skills and CLI configuration with `npx @flow-engineer/flow check`. Test the messaging\nagent with simulated conversations, inspect traces, and deploy on your own infrastructure or\nFlow Cloud. The playground simulators follow each app’s behavior, including channel-specific\ncontrols, media and voice notes; Debug mode shows the underlying platform payloads. Flow Messaging\nprovides channels through one API; you can also bring your own providers.\n\n[Deployment](https://docs.flow.engineer/hosting) · [Self-hosting](https://docs.flow.engineer/self-hosting) · [Testing](https://docs.flow.engineer/testing) · [Traces](https://docs.flow.engineer/traces)\n\nThe [documentation site](https://docs.flow.engineer) covers the Framework and the\n[Unified Messaging API](https://docs.flow.engineer/unified-messaging-api). Its source lives in the\nprivate `flow-engineer/docs` repository. Public behavior changes update the relevant guide there\nfor people and coding agents; see [AGENTS.md](https://github.com/flow-engineer/flow/blob/main/AGENTS.md).\n\n[Tools](https://docs.flow.engineer/build-agent) · [Skills](https://docs.flow.engineer/skills) · [Models and options](https://docs.flow.engineer/reference)\n\nIn this repository: [channel options](https://github.com/flow-engineer/flow/blob/main/docs/channels.md) · [patterns that worked](https://github.com/flow-engineer/flow/blob/main/docs/patterns.md) (enforce what matters in `beforeSend`, keep prompts for judgement, render in code, refuse with a reason the model can act on, test a long chat).\n\nA channel's `sendMessage` resolves when your platform accepted the message and rejects when it\nrefused it: the agent's next message waits for it, and a rejection reaches the agent as Not\ndelivered. What is ordered, what is sent once and what `send()` resolving means:\n[docs/guarantees.md](https://github.com/flow-engineer/flow/blob/main/docs/guarantees.md).\n\nReady-made `beforeSend` checks compose with `guards(...)`, the first refusal winning:\n`oncePerChat(line)` (a disclaimer at most once per conversation), `noRepeats()`,\n`linkAllowlist(hosts)` and `noWriteButtons(actions)`; they read what was sent from the stored\nhistory (`context.sent`), so they hold after a restart. `agent.resetHistory({ to, note })` starts\nthe history the model is sent again from now (nothing is deleted). Each model call carries at most\n24,000 tokens of history, or 60% of the model's `contextTokens` when that is less\n(`createAgent({ history: { maxTokens } })` to change it).\n\nWhat the agent must remember across days and people (a buyer's question waiting for the\nseller's answer) it keeps as records: small JSON documents in collections declared on\n`createAgent({ records })`, read by id or matched on a few declared fields, in the same store as its\nconversations, so they survive restarts and deploys and work the same in the playground,\nself-hosted and on Flow's hosting. Forgetting a person deletes the records that name them, and\n`flow records export` prints them all. The rule: if anything other than the agent reads it, it\nbelongs in your own database. [docs/agents.md](https://github.com/flow-engineer/flow/blob/main/docs/agents.md#the-agents-own-records)\n\nFlow Framework is 0.x: until 1.0 its API (exports, options, file formats, the CLI's commands,\n`--json` fields and exit codes) may change between releases. Every release's notes call out each\nbreaking change with a migration note saying what to change. The API freezes at 1.0. Pin the exact\nversion in `package.json` for production, and read the notes before you move it. What freezes at\n1.0: [docs/stability.md](https://github.com/flow-engineer/flow/blob/main/docs/stability.md).", "url": "https://wpnews.pro/news/show-hn-oss-framework-to-launch-instinct-like-imessage-assistants", "canonical_source": "https://github.com/flow-engineer/flow", "published_at": "2026-10-25 18:34:19+00:00", "updated_at": "2026-10-25 18:42:27.387502+00:00", "lang": "en", "topics": ["ai-agents", "agent-protocols", "developer-tools", "ai-tools", "artificial-intelligence"], "entities": ["Flow", "Claude", "ChatGPT", "WhatsApp", "iMessage", "Telegram", "Claude Code", "Codex"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/show-hn-oss-framework-to-launch-instinct-like-imessage-assistants", "markdown": "https://wpnews.pro/news/show-hn-oss-framework-to-launch-instinct-like-imessage-assistants.md", "text": "https://wpnews.pro/news/show-hn-oss-framework-to-launch-instinct-like-imessage-assistants.txt", "jsonld": "https://wpnews.pro/news/show-hn-oss-framework-to-launch-instinct-like-imessage-assistants.jsonld"}}