{"id":43621647,"url":"https://github.com/odefun/ode","last_synced_at":"2026-05-04T05:03:55.220Z","repository":{"id":333122622,"uuid":"1136189758","full_name":"odefun/ode","owner":"odefun","description":"Work anywhere with your favorite coding agents connected, coding sessions map 1-1 to chat threads, live updates and much more!","archived":false,"fork":false,"pushed_at":"2026-05-04T03:40:48.000Z","size":8502,"stargazers_count":22,"open_issues_count":0,"forks_count":4,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-05-04T04:28:53.740Z","etag":null,"topics":["chatbot","claude-code","codex","coding-agents","discord","gemini","kilo","kimi-code","kiro","openclaw","opencode","qwen-code","slack","vibe-coding"],"latest_commit_sha":null,"homepage":"https://ode.fun","language":"TypeScript","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/odefun.png","metadata":{"files":{"readme":"README.md","changelog":null,"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-01-17T08:23:00.000Z","updated_at":"2026-05-04T03:37:21.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/odefun/ode","commit_stats":null,"previous_names":["odefun/ode"],"tags_count":126,"template":false,"template_full_name":null,"purl":"pkg:github/odefun/ode","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/odefun%2Fode","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/odefun%2Fode/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/odefun%2Fode/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/odefun%2Fode/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/odefun","download_url":"https://codeload.github.com/odefun/ode/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/odefun%2Fode/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32595202,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T22:12:39.696Z","status":"online","status_checked_at":"2026-05-04T02:00:06.625Z","response_time":58,"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":["chatbot","claude-code","codex","coding-agents","discord","gemini","kilo","kimi-code","kiro","openclaw","opencode","qwen-code","slack","vibe-coding"],"created_at":"2026-02-04T13:30:48.321Z","updated_at":"2026-05-04T05:03:55.176Z","avatar_url":"https://github.com/odefun.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ode\n\n[Official Doc](https://ode.fun/docs/quickstart)\n\nOde is a agent tool that bridges your coding agents (OpenCode, Claude Code, Codex and much more) to your favorite chat apps (Slack, Discord, and Lark). Perfect for personal or team developers working on the go.\n\n![Ode demo](static/ode-demo.png)\n\n## Highlight features\n\n* 🏖️ Coding from anywhere, just chat and get response in slack or discord.\n* 🖇️ **Map coding sessions 1 - 1 to chat threads**, and use worktree to get isolated, parallel coding is so easy.\n* 👬 Anyone in the channel can join coding without any extra setup, **pay one account for all team members**.\n* 📝 **Message live message updates**, you don't wait for response without any information, you can monitor from real-time text updates.\n* 🐙 **Per user git config**, who start the thread becomes corresponding git commit author. (Run @bot /setting)\n\n## Compare with OpenClaw\n\n* OpenClaw is greate, but Ode utilize **thread based** messaging to organize things better, making it easy to port sessions in coding agents directly to chat apps. Just work on one thing in one thread.\n* Ode provide **live message updates**, you can monitor from real-time text updates for more confident.\n* **Channel based settings** lets you configure multiple work directories easily in one machine and one slack workspace.\n* **Work in parallel**, multiple threads can work together and isolated by worktree, multiple channels can also work together, just send messages.\n* **Team focused**, just allow people to join channel to give them permissions to work together.\n* Ode supports multiple chat tools including Slack, Discord, and Lark.\n\n## Setup\n\n### Prerequisites\n\n- Configured OpenCode / Claude Code / Codex / Kimi Code... at least 1 coding cli.\n- Choose one chatting app.\n  - **Slack** - follow [this doc](https://ode.fun/docs/chat-app-setup/slack) to get your APP TOKEN (xapp...) and BOT TOKEN (xbot..).\n  - **Discord** - follow [this doc](https://ode.fun/docs/chat-app-setup/discord) to get your BOT TOKEN.\n  - **飞书** - Just CN version for now, as Lark global is not supportting long connection with socket yet. Prepare the larkAppId and larkAppSecret.\n\n### Installation and Running\n\nOne-line install (macOS/Linux):\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/odefun/ode/main/scripts/install.sh | bash\n```\n\n```bash\node \n# ODE_WEB_HOST=0.0.0.0 ode if you want to expose setting page\n```\n\nSettings UI can be accessible via http://127.0.0.1:9293 or use `/setting` command in slack like `@bot /setting`.\n\n## Agent List\n\n| Agent | Logo | Link |\n| --- | --- | --- |\n| OpenCode | \u003cimg src=\"https://img.shields.io/badge/OpenCode-111111?style=for-the-badge\u0026logo=opencollective\u0026logoColor=white\" alt=\"OpenCode logo\" /\u003e | [opencode.ai](https://opencode.ai/) |\n| Codex | \u003cimg src=\"https://img.shields.io/badge/Codex-111111?style=for-the-badge\u0026logo=openai\u0026logoColor=white\" alt=\"Codex logo\" /\u003e | [github.com/openai/codex](https://github.com/openai/codex) |\n| Claude Code | \u003cimg src=\"https://img.shields.io/badge/Claude_Code-111111?style=for-the-badge\u0026logo=anthropic\u0026logoColor=white\" alt=\"Claude Code logo\" /\u003e | [docs.anthropic.com/claude-code](https://docs.anthropic.com/en/docs/claude-code/overview) |\n| Kimi Code | \u003cimg src=\"https://img.shields.io/badge/Kimi_Code-111111?style=for-the-badge\u0026logo=moonrepo\u0026logoColor=white\" alt=\"Kimi Code logo\" /\u003e | [moonshotai.github.io/kimi-cli](https://moonshotai.github.io/kimi-cli/) |\n| Qwen Code | \u003cimg src=\"https://img.shields.io/badge/Qwen_Code-111111?style=for-the-badge\u0026logo=alibabacloud\u0026logoColor=white\" alt=\"Qwen Code logo\" /\u003e | [github.com/QwenLM/qwen-code](https://github.com/QwenLM/qwen-code) |\n| Goose CLI | \u003cimg src=\"https://img.shields.io/badge/Goose_CLI-111111?style=for-the-badge\u0026logo=go\u0026logoColor=white\" alt=\"Goose CLI logo\" /\u003e | [block.github.io/goose](https://block.github.io/goose/) |\n| Gemini CLI | \u003cimg src=\"https://img.shields.io/badge/Gemini_CLI-111111?style=for-the-badge\u0026logo=google\u0026logoColor=white\" alt=\"Gemini CLI logo\" /\u003e | [github.com/google-gemini/gemini-cli](https://github.com/google-gemini/gemini-cli) |\n| Kilo Code | \u003cimg src=\"https://img.shields.io/badge/Kilo_Code-111111?style=for-the-badge\u0026logo=codeium\u0026logoColor=white\" alt=\"Kilo Code logo\" /\u003e | [kilo.ai/docs/code-with-ai/platforms/cli](https://kilo.ai/docs/code-with-ai/platforms/cli) |\n| Kiro CLI | \u003cimg src=\"https://img.shields.io/badge/Kiro_CLI-111111?style=for-the-badge\u0026logo=amazonec2\u0026logoColor=white\" alt=\"Kiro CLI logo\" /\u003e | [kiro.dev/docs/cli/reference](https://kiro.dev/docs/cli/reference/cli-commands/) |\n\n## Chat App List\n\n| Chat App | Logo | Link |\n| --- | --- | --- |\n| Slack | \u003cimg src=\"https://img.shields.io/badge/Slack-111111?style=for-the-badge\u0026logo=slack\u0026logoColor=white\" alt=\"Slack logo\" /\u003e | [slack.com](https://slack.com/) |\n| Discord | \u003cimg src=\"https://img.shields.io/badge/Discord-111111?style=for-the-badge\u0026logo=discord\u0026logoColor=white\" alt=\"Discord logo\" /\u003e | [discord.com](https://discord.com/) |\n| 飞书（CN） | \u003cimg src=\"https://img.shields.io/badge/Lark-111111?style=for-the-badge\u0026logo=lark\u0026logoColor=white\" alt=\"Lark logo\" /\u003e | [www.larksuite.com](https://www.larksuite.com/) |\n\n## Usage\n\n1. Invite the bot to a channel.\n2. Run `@bot /setting`, select channel setting, choose your coding cli (opencode also can choose model) and working directory.\n3. @ your bot with the prompt you want.\n3. The bot will process your message with the coding agent.\n\n## Worktrees\n\n- Each slack thread uses a dedicated git worktree at `\u003crepoRoot\u003e/.worktree/\u003cthreadId\u003e`\n- If you don't want to use worktree, can run `@bot /setting` and select general setting, choose default.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fodefun%2Fode","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fodefun%2Fode","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fodefun%2Fode/lists"}