{"slug": "one-tab-for-every-repo-container-and-ai-session-on-my-machine", "title": "One tab for every repo, container and AI session on my machine", "summary": "Developer Lorenzo Vicino built repo-control, an open-source dashboard that unifies Git repositories, Docker containers, and AI sessions into a single local tab. The tool scans local folders for repos, displays a queue of actionable items, and integrates with Claude Code, Codex, and Gemini CLI histories, all without cloud or telemetry. Vicino emphasizes security by ensuring the browser never sends file paths, only repository IDs.", "body_md": "My working day spans about ten Git repositories. Here is where their state actually lived:\n\n- which trees are dirty → forty terminal tabs\n- which branches are behind → a Git client, pointed at one repo at a time\n- which containers are up →\n`docker ps`\n\n- the AI conversation I had yesterday about the retry policy → somewhere under\n`~/.claude/projects`\n\n, in a folder named after a path\n\nSo I built **repo-control**.\n\nIt scans that folder for Git repositories and serves a dashboard on `127.0.0.1`\n\n.\n\nNo account, no cloud, no telemetry.\n\nFour things it puts in one tab:\n\n-\n**What needs you** — one queue, worst first: unhealthy containers, automations that failed,\nrepositories to pull, commit or push. Click a row, land in that repo already scoped.\n-\n**Every repo as a workspace** — inline diffs, staging, commit, fetch/pull/push, branches with\ndivergence and safe checkout, a terminal scoped to that folder that survives navigation,\nCompose state when there is a Compose file.\n-\n**Your AI sessions** — it reads the histories Claude Code, Codex and Gemini CLI already write\nto disk, keeps only the ones belonging to your workspace, and resumes any of them in a real\nterminal, in the right folder, with the right CLI. Nothing is copied anywhere.\n-\n**Automations** — drag Git, Docker and terminal nodes into a workflow: fetch everything,\nrebuild a stack, run one command across a selection. A dry run prints the exact commands first.\n\nOne decision I will not budge on: **the browser never sends a path.** It sends a repository ID,\n\nthe server resolves it against the root it scanned, and refuses anything outside. That is the\n\nwhole difference between \"a web page that runs shell commands on my machine\" and something I\n\nleave open all day.\n\nWhat it is not: a team tool, and not where you do rebases or conflict resolution — that stays in\n\nyour editor. It never calls the GitHub API. Everything it knows comes from `git`\n\n, `docker`\n\nand\n\nthe files on disk.\n\nMIT, TypeScript end to end: **github.com/LorenzoVicino/repo-control**\n\nNow the part I actually want from you. I have built this against exactly one workflow: mine.\n\nThree questions:\n\n- Across your repos, what state do you lose track of most?\n- Is \"one queue of what needs you\" the right front page, or would you want something else there?\n- What would make you close the tab in the first minute?\n\nIf you already have a system for keeping ten-plus repositories straight, I would rather hear that than a star.", "url": "https://wpnews.pro/news/one-tab-for-every-repo-container-and-ai-session-on-my-machine", "canonical_source": "https://dev.to/lorenzovicino/one-tab-for-every-repo-container-and-ai-session-on-my-machine-2gk2", "published_at": "2026-09-03 15:14:20+00:00", "updated_at": "2026-09-03 15:26:48.554101+00:00", "lang": "en", "topics": ["developer-tools"], "entities": ["Lorenzo Vicino", "repo-control", "Claude Code", "Codex", "Gemini CLI", "Git", "Docker"], "alternates": {"html": "https://wpnews.pro/news/one-tab-for-every-repo-container-and-ai-session-on-my-machine", "markdown": "https://wpnews.pro/news/one-tab-for-every-repo-container-and-ai-session-on-my-machine.md", "text": "https://wpnews.pro/news/one-tab-for-every-repo-container-and-ai-session-on-my-machine.txt", "jsonld": "https://wpnews.pro/news/one-tab-for-every-repo-container-and-ai-session-on-my-machine.jsonld"}}