{"id":49767485,"url":"https://github.com/michaelasper/telellm","last_synced_at":"2026-05-11T11:03:34.792Z","repository":{"id":355051989,"uuid":"1226551905","full_name":"michaelasper/telellm","owner":"michaelasper","description":"Telegram group chat bridge for sandboxed Codex CLI sessions","archived":false,"fork":false,"pushed_at":"2026-05-01T16:44:42.000Z","size":236,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-01T17:21:58.298Z","etag":null,"topics":["codex","docker","openai","rust","telegram"],"latest_commit_sha":null,"homepage":null,"language":"Rust","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/michaelasper.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":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-01T14:46:58.000Z","updated_at":"2026-05-01T16:44:45.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/michaelasper/telellm","commit_stats":null,"previous_names":["michaelasper/telellm"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/michaelasper/telellm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaelasper%2Ftelellm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaelasper%2Ftelellm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaelasper%2Ftelellm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaelasper%2Ftelellm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/michaelasper","download_url":"https://codeload.github.com/michaelasper/telellm/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaelasper%2Ftelellm/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32891966,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-10T13:40:02.631Z","status":"online","status_checked_at":"2026-05-11T02:00:05.975Z","response_time":120,"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":["codex","docker","openai","rust","telegram"],"created_at":"2026-05-11T11:03:33.921Z","updated_at":"2026-05-11T11:03:34.783Z","avatar_url":"https://github.com/michaelasper.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# telellm\n\n[![Rust](https://img.shields.io/badge/Rust-2024-orange)](Cargo.toml)\n[![Sandbox](https://img.shields.io/badge/Sandbox-Docker-blue)](Dockerfile.sandbox)\n[![Auth](https://img.shields.io/badge/Auth-ChatGPT%20OAuth%20or%20API%20broker-green)](docs/how-to/configure-codex-auth.md)\n[![License](https://img.shields.io/badge/License-MIT-lightgrey)](LICENSE)\n\n`telellm` connects Telegram groups and DMs to isolated Codex CLI runtimes.\nEach chat gets its own Docker workspace, queue, memory context, and Codex session.\n\nIt supports two credential modes:\n\n- `chatgpt_oauth` for Codex CLI access backed by a ChatGPT subscription login.\n- `broker_api_key` for host-held OpenAI API keys with per-chat broker tokens.\n\n## Quick Start\n\n```bash\ncp config.example.toml config.toml\nexport TELEGRAM_BOT_TOKEN=\"...\"\ndocker build -f Dockerfile.sandbox -t telellm-sandbox:local .\ncargo run -- doctor --config config.toml --create-network\ncargo run -- run --config config.toml\n```\n\nFor ChatGPT subscription auth, log in on the host and point the config at the Codex auth file:\n\n```bash\ncodex login --device-auth\n```\n\n```toml\n[codex]\nauth_mode = \"chatgpt_oauth\"\nauth_host_path = \"/Users/you/.codex/auth.json\"\n```\n\nFor API-key broker mode, keep the default `auth_mode = \"broker_api_key\"` and export the upstream key in the daemon environment:\n\n```bash\nexport OPENAI_API_KEY=\"sk-...\"\n```\n\nSet `telegram.allowed_chat_ids` before putting the bot in real groups. An empty allow-list accepts every chat that can reach the bot.\n\n## What It Does\n\n- Routes Telegram mentions, replies, slash commands, and DMs into Codex.\n- Imports addressed Telegram photos and documents into the chat workspace for Codex.\n- Sends files generated by Codex from the chat workspace back to Telegram.\n- Shows Telegram typing indicators and streams partial Codex output by editing a bot-owned message.\n- Supports configurable Telegram response formatting with plain text, MarkdownV2, or HTML.\n- Keeps one persistent Docker workspace volume per Telegram chat.\n- Stores durable group memory in SQLite and rolling recent context in memory.\n- Lets groups manage their own runtime with `/status`, `/reset`, `/restart`, and `/rebuild`.\n- Keeps the Docker socket and host secrets out of normal sandbox mounts.\n\n## Documentation\n\nStart here:\n\n- [First run tutorial](docs/tutorials/first-run.md)\n- [Telegram access setup](docs/how-to/configure-telegram-access.md)\n- [Codex authentication setup](docs/how-to/configure-codex-auth.md)\n- [Generated files](docs/how-to/send-generated-files.md)\n- [Runtime troubleshooting](docs/how-to/validate-and-troubleshoot.md)\n- [Configuration reference](docs/reference/configuration.md)\n- [Runtime and security model](docs/explanation/runtime-and-security.md)\n\nThe full documentation map is in [docs/README.md](docs/README.md).\n\n## Development\n\n```bash\n./scripts/check.sh\ncargo audit\n```\n\n`scripts/check.sh` runs `cargo fmt --check`, `cargo test`, and Clippy with warnings denied.\n\n## Security\n\nRead [SECURITY.md](SECURITY.md) before exposing a daemon to shared groups.\n\nThe short version:\n\n- Keep `profiles/`, `.env`, and local data out of git and Docker build contexts.\n- Use explicit `allowed_chat_ids` outside of temporary setup.\n- Treat everyone in an allowed Telegram chat as able to control that chat's sandbox.\n- Use `chatgpt_oauth` only for chats trusted with the copied Codex subscription auth inside their sandbox.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmichaelasper%2Ftelellm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmichaelasper%2Ftelellm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmichaelasper%2Ftelellm/lists"}