Remote-first repository workspaces for VS Code.
RepoShelf lets you browse repositories without cloning every project, then materialize a controlled partial/sparse or full local workspace only when normal editing and Git tooling are needed. GitLab is the first implemented provider; the product identity and architecture remain provider-neutral.
Important
RepoShelf is pre-release software. Phase 4 implementation is complete, with native Windows destructive-path validation still required as a release gate. Closing a window never authorizes workspace deletion.
- Connect to one self-managed GitLab instance with a PAT stored in VS Code
SecretStorage. - Browse groups, projects, branches, and repository trees lazily.
- Open immutable, read-only remote files pinned to a full commit SHA.
- Compare a pinned file with the same path on another branch.
- Materialize full or partial+sparse Git workspaces through native Git.
- Validate clone roots, origins, branches, commits, sparse scope, and private ownership markers before creating or reusing a managed workspace.
- Run a read-only, fail-closed managed-workspace safety assessment covering ownership, containment, dirty/unsaved state, Git operations, remote reachability, and local-only refs.
- Push committed work to an explicit managed branch, verify the remote result, and release only the proven local checkout after explicit confirmation.
- Keep remote file content in a bounded memory-only cache.
See PHASED-PLAN.md for scope and sequencing. Design and security contracts are under docs/phase-0, with implementation records for Phase 1, Phase 2, Phase 3, and Phase 4.
- RepoShelf does not collect telemetry.
- API PATs are stored in VS Code SecretStorage and are never inserted into Git URLs or process arguments.
- Native Git authentication is delegated to the host's HTTPS credential helper.
- Remote source bodies are not persistently cached by RepoShelf.
- Managed workspace release is fail-closed and never deletes remote data. Native Windows junction/reparse and open-handle validation remains mandatory before a production release.
Never include credentials, private repository content, internal URLs, project identifiers, usernames, or ownership-marker data in public issues or logs. See SECURITY.md for private vulnerability reporting.
Requirements:
- VS Code 1.137.0 or newer
- Node.js 24 (the exact development pin is in
mise.toml) - npm
- Git for materialization tests
git clone https://github.com/jwhitten37-dev/RepoShelf.git
cd RepoShelf
npm ci
npm run check
npm run buildIf you use mise, run commands through mise exec -- to
use the pinned Node.js version.
Marketplace packaging and the Microsoft Entra workload-identity release process are documented in docs/PUBLISHING.md.
To exercise the extension UI, open the checkout in VS Code, select
Run RepoShelf Extension in Run and Debug, and press F5. Use only an
authorized test instance and least-privilege credentials.
RepoShelf is a clean-break rename of the pre-release GitLab On-Demand prototype. Old command IDs, settings, SecretStorage entries, remote URI schemes, extension state, default workspace roots, and ownership markers are not migrated. Existing prototype workspaces are not deleted; they must be inspected and managed manually.
Read CONTRIBUTING.md before opening a pull request. Use GitHub Discussions for usage questions when available and GitHub Issues for reproducible bugs and approved feature proposals. The project is currently maintained on a best-effort basis; see SUPPORT.md.
RepoShelf is licensed under the Apache License 2.0.
RepoShelf is an independent project and is not affiliated with, endorsed by, or sponsored by GitLab Inc., GitHub, Inc., or Microsoft Corporation. GitLab, GitHub, Visual Studio Code, and related marks belong to their respective owners.
