{"id":42141369,"url":"https://github.com/ali5ter/carrybag-lite","last_synced_at":"2026-04-26T21:04:35.253Z","repository":{"id":150553517,"uuid":"216228301","full_name":"ali5ter/carrybag-lite","owner":"ali5ter","description":"🎒 Portable bash environment — single-file config, automated bootstrap for macOS and Debian-based Linux","archived":false,"fork":false,"pushed_at":"2026-04-23T21:56:54.000Z","size":285,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-23T23:28:09.932Z","etag":null,"topics":["ai-tools","bash","bootstrap","cli","debian","dotfiles","linux","macos","nvm","pyenv","raspberry-pi","shell","starship","terminal"],"latest_commit_sha":null,"homepage":"","language":"Shell","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/ali5ter.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-10-19T15:31:48.000Z","updated_at":"2026-04-23T21:56:59.000Z","dependencies_parsed_at":"2023-07-30T07:16:13.699Z","dependency_job_id":"f29494ac-15ea-44de-b7d6-4368b7802a55","html_url":"https://github.com/ali5ter/carrybag-lite","commit_stats":null,"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"purl":"pkg:github/ali5ter/carrybag-lite","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ali5ter%2Fcarrybag-lite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ali5ter%2Fcarrybag-lite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ali5ter%2Fcarrybag-lite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ali5ter%2Fcarrybag-lite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ali5ter","download_url":"https://codeload.github.com/ali5ter/carrybag-lite/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ali5ter%2Fcarrybag-lite/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32312507,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T19:15:34.056Z","status":"ssl_error","status_checked_at":"2026-04-26T19:15:15.467Z","response_time":129,"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":["ai-tools","bash","bootstrap","cli","debian","dotfiles","linux","macos","nvm","pyenv","raspberry-pi","shell","starship","terminal"],"created_at":"2026-01-26T17:14:20.484Z","updated_at":"2026-04-26T21:04:35.248Z","avatar_url":"https://github.com/ali5ter.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CarryBag Lite\n\n```text\n  ___                   ___              _    _ _\n / __|__ _ _ _ _ _ _  _| _ ) __ _ __ _  | |  (_) |_ ___\n| (__/ _` | '_| '_| || | _ \\/ _` / _` | | |__| |  _/ -_)\n \\___\\__,_|_| |_|  \\_, |___/\\__,_\\__, | |____|_|\\__\\___|\n                   |__/          |___/\n```\n\n**CarryBag is my collection of dot files, custom functions and theme settings\nused to create a bash shell environment I can carry from machine to machine.**\n\nOne file, no fuss, less mess.\n\nTested on macOS Tahoe and Debian-based Linux (Bookworm/Trixie), including Raspberry Pi OS.\n\n## Features\n\n- ✨ Single-file configuration (`bash_profile`)\n- 🚀 Automated bootstrap for macOS and Debian-based Linux\n- 🐍 Python version management (pyenv)\n- 📦 Node version management (nvm)\n- ⭐ Starship prompt with custom themes\n- 📁 Directory jumper (zoxide)\n- 🔍 History search via fzf (Ctrl-R)\n- 🎨 Syntax highlighting (bat)\n- 🔄 Automatic daily package updates\n- 🤖 AI tools: Claude Code, Gemini CLI, and Codex CLI — all sharing the same coding standards from a single source\n\n## Quick Install\n\n### Option 1: Automated Bootstrap (Recommended)\n\n```bash\n# macOS\ngit clone https://github.com/ali5ter/carrybag-lite.git ~/Documents/projects/carrybag-lite\n\n# Linux\ngit clone https://github.com/ali5ter/carrybag-lite.git ~/src/carrybag-lite\n\n# Run installer\ncd carrybag-lite\n./bootstrap/install.sh\n```\n\nThis installs all dependencies (including pfb), links configuration, and sets up tools.\n\n### Option 2: Manual Install\n\nFor macOS, install latest bash first:\n\n```bash\nbrew install bash\nchsh -s $(brew --prefix)/bin/bash\n```\n\nThen link the configuration:\n\n```bash\ncp ~/.bash_profile ~/.bash_profile.$(date +\"%Y%m%d%H%M%S\")\nln -sf $PWD/bash_profile ~/.bash_profile\n```\n\n## What Gets Installed\n\n**Common (macOS and Linux):**\n\n- `git`, `vim`, `shellcheck`, `watch`\n- `jq`, `yq`, `bat`, `tree`, `fzf`, `figlet`\n- `starship` (prompt), `fzf` (history + fuzzy search), `z` (directory jumper)\n- Nerd Fonts, Claude Code\n\n**macOS only:**\n\n- `bash` (latest), `bash-completion`, `node`, `go`\n- `btop`, `ncdu`, `nmap`, `wakeonlan`\n- GUI apps: iTerm2, Visual Studio Code, Figma, 1Password, Dropbox, CleanMyMac\n\n**Linux only:**\n\n- `curl`, `wget`, `gnupg`, `fontconfig`, `nodejs`, `npm`\n- `btop`, `ncdu` (system monitoring)\n- `gemini-cli`, `codex` (AI tools, installed via npm)\n- ufw firewall configuration\n- Login banner with hostname and system info\n\n**Raspberry Pi extras:**\n\n- `rpi-connect-lite` (remote management)\n- Ethernet-over-WiFi priority configuration\n\n**Optional (prompted during bootstrap):**\n\n- `pyenv` (Python version management)\n- `docker`\n\n## AI Tools Configuration\n\nThe bootstrap installs Claude Code, Gemini CLI, and Codex CLI, and wires up shared\ndevelopment standards so all three tools operate from the same principles.\n\n### Shared development standards\n\n`claude/CLAUDE.md` is the single source of truth for coding standards and project conventions.\nIt is automatically loaded by Claude Code as the user-level instruction file. The same file is\nshared with Codex CLI via a symlink so all AI tools enforce the same standards:\n\n| Tool | Config location | Source |\n| --- | --- | --- |\n| Claude Code | `~/.claude/CLAUDE.md` | symlinked from `claude/CLAUDE.md` |\n| Codex CLI | `~/.codex/AGENTS.md` | symlinked from `claude/CLAUDE.md` |\n| Gemini CLI | `~/.gemini/GEMINI.md` | symlinked from `claude/CLAUDE.md` |\n\n### Claude Code\n\nThe full `claude/` directory is symlinked to `~/.claude/` during bootstrap, providing:\n\n- **`CLAUDE.md`** — seven development principles loaded automatically into every session\n- **`settings.json`** — preferences including statusline, always-thinking mode, and enabled plugins\n- **`statusline-command.sh`** — custom statusline showing hostname, directory, git branch, model, and token usage\n\nEnabled plugins (pre-configured in `settings.json`):\n\n- [`claude-workflow-skills`](https://github.com/ali5ter/claude-workflow-skills) — `/promote`,\n  `/audit-plugin`, `/audit-standards` workflow skills\n- [`obsidian-project-documentation`](https://github.com/ali5ter/obsidian-project-assistant) — automatic\n  project documentation in Obsidian\n- [`over-50s-health`](https://github.com/ali5ter/over-50s-health-advisor) — health and fitness advisor\n\nPlugins are distributed via the `ali5ter` Claude Code plugin marketplace. After bootstrapping,\ninstall them with:\n\n```text\n/plugin marketplace add ali5ter/claude-plugins\n/plugin install claude-workflow-skills@ali5ter\n/plugin install obsidian-project-documentation@ali5ter\n/plugin install over-50s-health@ali5ter\n```\n\n### Codex CLI\n\n`codex/install.sh` symlinks `claude/CLAUDE.md` → `~/.codex/AGENTS.md`. Codex reads `AGENTS.md`\nas its user-level instruction file, so it operates from the same seven principles as Claude Code\nwithout any duplication.\n\n### Gemini CLI\n\n`gemini/install.sh` symlinks `claude/CLAUDE.md` → `~/.gemini/GEMINI.md`. Gemini CLI reads\n`GEMINI.md` as its user-level instruction file (verified with `/memory show` inside a Gemini\nsession), applying the same seven development principles as Claude Code and Codex.\n\n## Additional Tools\n\n### Machine Migration\n\nTransfer configurations from old machine to new:\n\n```bash\n./bootstrap/migrate.sh \u003cusername\u003e \u003cremote-host\u003e\n```\n\n### Bulk Git Repository Updates\n\nUpdate all git repositories in a directory in one pass, with optional parallel\nmode (`--parallel`). See [tools/README.md](tools/README.md) for full details.\n\n### Local and Remote Sync\n\nSync a directory to a local drive or a remote host over SSH, with custom port\nand key support (`--port`, `--key`). See [tools/README.md](tools/README.md)\nfor full details.\n\n## Testing in a Raspberry Pi–like Docker Container\n\nTest the bootstrap process inside a simulated Raspberry Pi ARM64 environment:\n\n```bash\n./test_rpi.sh\n```\n\nThis script will:\n\n- mount the repo under `/root/src/carrybag-lite`\n- install pfb inside the container via the official curl installer\n- simulate Pi‑style network interfaces (`wlan0`, `eth1`)\n- run `bootstrap/install.sh`\n- keep the container alive for inspection\n\nTo inspect the running container:\n\n```bash\ndocker exec -it carrybag-test bash\n```\n\nTo stop and remove the test container:\n\n```bash\ndocker rm -f carrybag-test\n```\n\n## Customization\n\nAdd personal overrides without modifying `bash_profile`:\n\n```bash\n# Create local overrides file\necho \"alias myalias='echo hello'\" \u003e\u003e ~/.bashrc_local\n```\n\nThe `bash_profile` automatically sources `~/.bashrc_local` if it exists.\n\n## Documentation\n\nSee [tools/README.md](tools/README.md) for the utility script reference.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fali5ter%2Fcarrybag-lite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fali5ter%2Fcarrybag-lite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fali5ter%2Fcarrybag-lite/lists"}