{"id":50483308,"url":"https://github.com/wtdcode/copilot-docker","last_synced_at":"2026-06-01T19:30:58.577Z","repository":{"id":348329245,"uuid":"1197326416","full_name":"wtdcode/copilot-docker","owner":"wtdcode","description":"Docker image for copilot cli","archived":false,"fork":false,"pushed_at":"2026-04-28T09:32:56.000Z","size":18,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-04-28T11:29:14.903Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","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/wtdcode.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":null,"dco":null,"cla":null}},"created_at":"2026-03-31T13:50:36.000Z","updated_at":"2026-04-28T09:33:00.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/wtdcode/copilot-docker","commit_stats":null,"previous_names":["wtdcode/copilot-docker"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/wtdcode/copilot-docker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wtdcode%2Fcopilot-docker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wtdcode%2Fcopilot-docker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wtdcode%2Fcopilot-docker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wtdcode%2Fcopilot-docker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wtdcode","download_url":"https://codeload.github.com/wtdcode/copilot-docker/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wtdcode%2Fcopilot-docker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33790691,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-01T02:00:06.963Z","response_time":115,"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":[],"created_at":"2026-06-01T19:30:57.608Z","updated_at":"2026-06-01T19:30:58.572Z","avatar_url":"https://github.com/wtdcode.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# copilot-docker\n\nOne Docker image based on Ubuntu 24.04 with both [GitHub Copilot CLI](https://www.npmjs.com/package/@github/copilot) and [Claude Code](https://code.claude.com/docs/en/quickstart) pre-installed.\n\n## What's included\n\n- Ubuntu 24.04 (unminimized)\n- Node.js LTS + latest npm (via [n](https://github.com/tj/n))\n- GitHub Copilot CLI (`@github/copilot`)\n- Claude Code installed via the official quickstart installer\n- Common tools: git, curl, fish, vim, sudo, tmux, ripgrep\n- Locale: `en_US.UTF-8`\n- [telegram-send](https://github.com/rahiel/telegram-send) for hook notifications\n\n## Usage\n\n```bash\n# Pull from Docker Hub\ndocker pull lazymio/vibe:latest\n\n# Run with defaults (user: mio, UID/GID: 1000/1000, shell: fish)\ndocker run --rm -it lazymio/vibe:latest\n\n# Custom user\ndocker run --rm -it \\\n  -e USER_NAME=alice \\\n  -e USER_UID=1001 \\\n  -e USER_GID=1001 \\\n  lazymio/vibe:latest\n\n# Match host user\ndocker run --rm -it \\\n  -e USER_NAME=$(whoami) \\\n  -e USER_UID=$(id -u) \\\n  -e USER_GID=$(id -g) \\\n  lazymio/vibe:latest\n```\n\n## Environment Variables\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `USER_NAME` | `mio` | Username to create |\n| `USER_UID` | `1000` | User UID |\n| `USER_GID` | `1000` | User GID |\n| `BOT_TOKEN` | (unset) | Telegram bot token for notifications |\n| `ADMIN_ID` | (unset) | Telegram chat ID for notifications |\n| `ANTHROPIC_AUTH_TOKEN` | `a` | Used by the generated `claude-bootstrap` fish function for first-time Claude auth setup |\n| `ANTHROPIC_BASE_URL` | `b` | Used by the generated `claude-bootstrap` fish function for first-time Claude auth setup |\n| `CLAUDE_CODE_OAUTH_TOKEN` | (unset) | Claude Code OAuth token written into fish config on startup |\n| `GH_TOKEN` | (unset) | GitHub token written into fish config on startup |\n| `GITHUB_TOKEN` | (unset) | GitHub token written into fish config on startup |\n\nThe created user has `NOPASSWD:ALL` sudo access and uses `fish` as the default shell.\n\nIf `CLAUDE_CODE_OAUTH_TOKEN`, `GH_TOKEN`, or `GITHUB_TOKEN` is set, the shared entrypoint writes them into `~/.config/fish/config.fish` so new fish shells and tmux panes inherit them.\n\nThe entrypoint always writes a `claude-bootstrap` fish function into `~/.config/fish/config.fish`. That function runs `claude` as `ANTHROPIC_AUTH_TOKEN=... ANTHROPIC_BASE_URL=... claude`, using the provided `ANTHROPIC_AUTH_TOKEN` and `ANTHROPIC_BASE_URL` values or falling back to placeholder defaults `a` and `b`. This is useful for the first Claude auth bootstrap before switching over to `CLAUDE_CODE_OAUTH_TOKEN`.\n\n## Telegram Notifications\n\nThe image includes [telegram-send](https://github.com/rahiel/telegram-send) plus both hook templates:\n\n- [Copilot hooks](https://docs.github.com/en/copilot/customizing-copilot/copilot-hooks) in `~/.copilot/hooks/tg.json`, sending notifications on `agentStop` and `sessionEnd`\n- [Claude Code hooks](https://code.claude.com/docs/en/hooks) in `~/.claude/settings.json`, sending notifications on `Stop` and `StopFailure`\n\nTo enable, pass `BOT_TOKEN` and `ADMIN_ID`:\n\n```bash\ndocker run --rm -it \\\n  -e BOT_TOKEN=123456:ABC-DEF... \\\n  -e ADMIN_ID=your_chat_id \\\n  lazymio/vibe:latest\n```\n\nNotifications include the event type, hostname, working directory, and the last assistant message (up to 500 chars) when available.\n\nIf `BOT_TOKEN` or `ADMIN_ID` is not set, telegram-send will not be configured and hooks will silently skip notifications.\n\n\u003e **Note:** Do not mount a volume directly to `$HOME` (e.g., `-v /host/path:/home/mio`). Instead, mount subdirectories (e.g., `-v ~/.copilot:/home/mio/.copilot`). The entrypoint copies default config files (like `.tmux.conf`) into `$HOME` at startup, which would fail if the entire home directory is an external mount.\n\n## Build locally\n\n```bash\ndocker build -t lazymio/vibe .\n\ndocker run --rm -it lazymio/vibe\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwtdcode%2Fcopilot-docker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwtdcode%2Fcopilot-docker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwtdcode%2Fcopilot-docker/lists"}