{"id":18576183,"url":"https://github.com/jreyesr/openchatflow","last_synced_at":"2026-04-29T01:02:15.515Z","repository":{"id":161891477,"uuid":"635111708","full_name":"jreyesr/openchatflow","owner":"jreyesr","description":"An application to visually design, test, run and monitor Telegram chatbots","archived":false,"fork":false,"pushed_at":"2023-07-24T03:04:33.000Z","size":304,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-05T04:22:10.276Z","etag":null,"topics":["chatbot","nextjs","telegram-bot"],"latest_commit_sha":null,"homepage":"https://openchatflow.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jreyesr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2023-05-02T01:51:49.000Z","updated_at":"2023-08-07T00:49:40.000Z","dependencies_parsed_at":null,"dependency_job_id":"ddc98978-3d28-4c41-975f-1b4185217d83","html_url":"https://github.com/jreyesr/openchatflow","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jreyesr/openchatflow","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jreyesr%2Fopenchatflow","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jreyesr%2Fopenchatflow/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jreyesr%2Fopenchatflow/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jreyesr%2Fopenchatflow/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jreyesr","download_url":"https://codeload.github.com/jreyesr/openchatflow/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jreyesr%2Fopenchatflow/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32405904,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-28T19:38:08.556Z","status":"ssl_error","status_checked_at":"2026-04-28T19:37:55.688Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["chatbot","nextjs","telegram-bot"],"created_at":"2024-11-06T23:23:54.049Z","updated_at":"2026-04-29T01:02:15.495Z","avatar_url":"https://github.com/jreyesr.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# OpenChatflow\n\nAn application to visually design, test, run and monitor Telegram chatbots.\n\nExplore the demo here:\n\n[![vercel badge](https://img.shields.io/badge/vercel-prod-brightgreen)](https://openchatflow.vercel.app/)\n\n## Features\n\n- Visual designer for Telegram conversations, inspired by [UML 2.x Activity Diagrams](https://en.wikipedia.org/wiki/Activity_diagram)\n  ![a screenshot of the editor](./images/eff5909a5847caa0976bfe0644bdfe53.png)\n\n- Nodes that drive the conversation forward:\n  - A simple text node that just sends a message to the user\n  - A prompt node that asks the user for a response and then continues\n  - An option node that prompts the user to make a choice\n  - A confirmation node that requires the user to confirm a choice\n- Nodes that take actions without disturbing the conversation state\n  - HTTP requests\n  - (TODO) Logging arbitrary events in the conversation's history\n  - (TODO) Setting values in the conversation's memory, to be retrieved later\n- (TODO) A conversation context (per conversation) where nodes can store information for later decisions\n- (TODO) Branching conversational paths, depending on the user's responses or external systems\n  - Could be used to implement arbitrary authorization policies, so that only certain users can use the bot's tools\n- Configurable exit statuses for conversations\n- (TODO) Testing utilities to test and debug conversations\n  - Context viewer and editor\n  - Starting conversations from arbitrary points with an arbitrary past history\n- (TODO) Conversation monitor for ongoing user conversations\n\n## Development\n\nInstall dependencies with `yarn install`.\n\n(Optional) Generate a key to encrypt the bot tokens in the DB:\n\n```bash\nyarn cloak generate\n```\n\nCopy the `CLOAK_MASTER_KEY` that is generated, the `CLOAK_KEYCHAIN` doesn't appear to be important.\n\n(End of Optional)\n\nCreate a `.env` file based on these contents:\n\n```bash\nDATABASE_URL=\"postgresql://postgres:your-key@localhost:5432?pgbouncer=true\"\nDIRECT_URL=\"postgresql://postgres:your-super-secret-and-long-postgres-password@localhost:5432\"\n\n# Copy the CLOAK_MASTER_KEY here, or use this one for a faster start\nPRISMA_FIELD_ENCRYPTION_KEY=\"k1.aesgcm256.DbQoar8ZLuUsOHZNyrnjlskInHDYlzF3q6y1KGM7DUM=\"\n```\n\nRun the development server:\n\n```bash\nyarn dev\n```\n\nThen, open \u003chttp://localhost:3000\u003e in your browser.\n\n### Locally developing Telegram webhooks\n\nIf you need to test with real Telegram bots, I recommend using [Localtunnel](https://theboroer.github.io/localtunnel-www/) instead of [Ngrok](https://ngrok.com/). This is because Ngrok assigns you random subdomains on the free plan. Localtunnel, on the other hand, lets you request a subdomain.\n\nFollow the instructions to install the CLI (it's a Node package). Then, run `lt --subdomain openchatflow --port 3000 --print-requests` to start the tunnel on \u003chttps://openchatflow.loca.lt\u003e. Note that if someone else is using that same domain, you won't be able to use it, and Localtunnel will assign you a random subdomain anyways. In that case, change the subdomain and try again, since you need a stable subdomain for registering with Telegram.\n\nOtherwise, you can test locally (without involving the actual Telegram servers), using [these examples](https://core.telegram.org/bots/webhooks#testing-your-bot-with-updates) to send\nHTTP requests that look similar to those sent by Telegram itself. If developing locally, omit the `--tlsv1.2` flag, since it only works for HTTPS, and also change the `https://openchatflow.loca.lt` base URL for `http://localhost:3000`.\n\n```bash\ncurl --tlsv1.2 -k -X POST -H \"Content-Type: application/json\" -H \"Cache-Control: no-cache\"  -d '{\n\"update_id\":10000,\n\"message\":{\n  \"date\":1441645532,\n  \"chat\":{\n     \"last_name\":\"Test Lastname\",\n     \"id\":1111111,\n     \"first_name\":\"Test\",\n     \"username\":\"Test\"\n  },\n  \"message_id\":1365,\n  \"from\":{\n     \"last_name\":\"Test Lastname\",\n     \"id\":1111111,\n     \"first_name\":\"Test\",\n     \"username\":\"Test\"\n  },\n  \"text\":\"/start\"\n}\n}' https://openchatflow.loca.lt/api/webhook/telegram\n```\n\nFor example:\n\n- Sending a text message\n\n```bash\ncurl -k -X POST -H \"Content-Type: application/json\" -H \"Cache-Control: no-cache\"  -d '{\n\"update_id\":10000,\n\"message\":{\n  \"date\":1441645532,\n  \"chat\":{\n     \"last_name\":\"Test Lastname\",\n     \"id\":1111111,\n     \"first_name\":\"Test\",\n     \"username\":\"Test\"\n  },\n  \"message_id\":1365,\n  \"from\":{\n     \"last_name\":\"Test Lastname\",\n     \"id\":1111111,\n     \"first_name\":\"Test\",\n     \"username\":\"Test\"\n  },\n  \"text\":\"/start\"\n}\n}' http://localhost:3000/api/webhook/telegram\n```\n\n## Contributing\n\nAll contributions are welcome! Code, documentation, UI styling overhauls, bug reports and everything else.\n\nAll activity currently takes place in this repository.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjreyesr%2Fopenchatflow","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjreyesr%2Fopenchatflow","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjreyesr%2Fopenchatflow/lists"}