openmate
v1.4.1
Published
OpenMate: A fast CLI tool to open local repos or entire collections in VS Code, Windsurf, or Cursor using simple shortcuts for an efficient developer workflow.
Maintainers
Readme
OpenMate (om)
A fast and friendly CLI tool to manage and open your local repositories in VS Code, Windsurf, Cursor, IntelliJ IDEA, or PyCharm with quick shortcuts. Perfect for developers who frequently switch between projects.
Note: In this context, repository refers to your local project folder stored on your computer, not remote (GitHub/GitLab/Bitbucket) repositories.
Table of Contents
OpenMate CLI
📌 Notes & OS Compatibility
- Supported editors: VS Code, Windsurf, Cursor, IntelliJ IDEA, PyCharm and Antigravity.
- On Windows, use double quotes for paths.
📦 Installation
Install globally via npm:
npm install -g openmateVerify installation:
om --version⚡ Usage
Available Commands
Repository Management
om init <name> Initialize current directory as a repository
om add <name> "<path/to/repo>" Add a repo (no duplicate names)
om update <name> "<new/path>" Update stored path for existing name
om remove <name> Remove stored repo
om ide <name> <ide> Set preferred IDE (vs, ws, cs, ij, pc, ag)
om list List all stored repos
om path <name> Print the stored pathExamples
Initialize Current Directory as a Repository
Navigate to your project directory and run:
om init repo1Output:
✅ Added "repo1" -> C:/Projects/repo1Now you can open this repository in your default editor using:
om vs repo1 # Opens in VS Code
# or
om ws repo1 # Opens in Windsurf
Collection Management
om add -c <name> <repo1,repo2,...> Add/update a collection of repos
om update -c <name> <repo1,repo2,...> Update a collection's repos
om remove -c <name> Remove a collection
om list -c List all collections
om list <collection> Show details of a specific collectionOpen Repositories/Collections
om vs <name> Open repo/collection in VS Code
om ws <name> Open repo/collection in Windsurf
om cs <name> Open repo/collection in Cursor
om ij <name> Open repo/collection in IntelliJ IDEA
om pc <name> Open repo/collection in PyCharm
om ag <name> Open repo/collection in Antigravity
om d <name> Open repo/collection in preferred IDE
om <name> Alias for `om d <name>` (if preferred IDE is set)Examples
Below are some practical examples of how to use OpenMate for managing repositories and collections.
✅ Basic Repository Usage
A repository is a single project folder on your local machine. You can add, update, remove, and open repositories using short commands.
# Add a repository with a short name (alias)
om add <repo-name> "<path-to-repo>"
# Open the repository in VS Code
om vs <repo-name>
# Open the repository in Windsurf
om ws <repo-name>
# Open the repository in Cursor
om cs <repo-name>
# Open the repository in IntelliJ IDEA
om ij <repo-name>
# Open the repository in PyCharm
om pc <repo-name>
# Open the repository in Antigravity
om ag <repo-name>Update or remove a repository:
# Update the path of an existing repository
om update <repo-name> "<new-path-to-repo>"
# Remove the repository
om remove <repo-name>✅ Preferred IDE
You can set a preferred IDE for any repository or collection. This allows you to open it directly without specifying the editor every time.
Set a preferred IDE:
om ide <name> vs # Set VS Code as default
om ide <name> ws # Set Windsurf as defaultOpen in preferred IDE:
Once a preferred IDE is set, you can use either of these commands:
om d <name>
# or simply
om <name>If no preferred IDE is set, om d or om <name> will warn you and show usage instructions.
✅ Listing Repositories and Collections
Use the list command to view repositories and collections:
# List all repositories and collections
om list
# List only repositories
om list -r
# List only collections
om list -cView details of a specific collection:
om list <collection-name>
# Example Output:
# ✅ Collection "<collection-name>":
# repo1, repo2, repo3If the collection doesn’t exist:
om list <nonexistent>
# Output:
# ❌ Collection "<nonexistent>" not found.
# Available collections:
# 1. frontend
# 2. backend✅ Working with Collections
A collection is a group of related repositories you can manage together.
Create a collection:
om add -c <collection-name> repo1,repo2,repo3,repo4Here:
-cindicates you are adding a collection.<collection-name>is the name of the collection.repo1,repo2,repo3,repo4are the repository names in the collection.
Open all repositories in a collection:
om vs <collection-name>Update a collection (add/remove repos):
om update -c <collection-name> repo1,repo2,repo3,repo4,repo5List all collections:
om list -cRemove a collection:
om remove -c <collection-name>Sample Outputs
om list
When you run om list, it shows all stored repositories and collections:
Stored repos:
┌─────┬──────────┬───────────────────────────────┐
│ # │ Name │ Repo Path │
├─────┼──────────┼───────────────────────────────┤
│ 1 │ repo1 │ C:\Projects\repo1 │
│ 2 │ repo2 │ C:\Projects\repo2 │
│ 3 │ repo3 │ C:\Projects\repo3 │
│ 4 │ repo4 │ C:\Projects\repo4 │
└─────┴──────────┴───────────────────────────────┘
Collections:
┌─────┬────────────────────┬──────────┬───────────────────────────┐
│ # │ Name │ Repos │ Repository Names │
├─────┼────────────────────┼──────────┼───────────────────────────┤
│ 1 │ collection1 │ 2 │ repo1, repo2 │
│ 2 │ collection2 │ 2 │ repo3, repo4 │
└─────┴────────────────────┴──────────┴───────────────────────────┘List Only Repositories
om list -rSample Output:
Stored Repositories:
┌─────┬──────────┬───────────────────────────────┐
│ # │ Name │ Repo Path │
├─────┼──────────┼───────────────────────────────┤
│ 1 │ repo1 │ C:\\Projects\\repo1 │
│ 2 │ repo2 │ C:\\Projects\\repo2 │
│ 3 │ repo3 │ C:\\Projects\\repo3 │
└─────┴──────────┴───────────────────────────────┘List Only Collections
om list -cSample Output:
Collections:
┌─────┬──────────────┬──────────┬───────────────────────────────┐
│ # │ Name │ Repos │ Repository Names │
├─────┼──────────────┼──────────┼───────────────────────────────┤
│ 1 │ frontend │ 4 │ repo1, repo2, repo3, repo4 │
│ 2 │ backend │ 2 │ repo5, repo6 │
└─────┴──────────────┴──────────┴───────────────────────────────┘List a Specific Collection
om list frontendSample Output:
Collection: frontend
Repositories:
┌─────┬──────────┬───────────────────────────────┐
│ # │ Name │ Repo Path │
├─────┼──────────┼───────────────────────────────┤
│ 1 │ repo1 │ C:\\Projects\\repo1 │
│ 2 │ repo2 │ C:\\Projects\\repo2 │
│ 3 │ repo3 │ C:\\Projects\\repo3 │
│ 4 │ repo4 │ C:\\Projects\\repo4 │
└─────┴──────────┴───────────────────────────────┘Smart Suggestions
When you type a partial repository or collection name, OpenMate will show you matching suggestions:
om ws stSample Output:
❌ No exact match for "st". Did you mean one of these?
Suggestions:
Repositories: stagentdash stapp stappdocs stboxesmfe stdaisy stsearch
Collections: stagent stsite stuserWhen Collection Doesn't Exist
om list nonexistentSample Output:
❌ Collection "nonexistent" not found.
Available collections:
1. frontend
2. backendOpenMate UI
OpenMate UI is a desktop application that allows you to manage and open your local repositories in your favorite editor with quick shortcuts.
Features:
supports all the cli features and also has some extra features.
- Add repositories
- Edit repositories
- Add collections
- Edit collections
- Open repositories
- Open collections
Extra Features:
- Dark/Light mode
- Select default editor
- Search repositories and collections
Screenshots
Main Window

Add Repository

Edit Repository

Add Collection

Edit Collection

Key Tips
- Use short names (aliases) for repositories for quick access.
- Collections save time when you work on multiple related repositories.
om vs,om ws,om cs,om ij,om pcandom aglet you choose your editor (VS Code, Windsurf, Cursor, IntelliJ IDEA, PyCharm or Antigravity).
🔧 Requirements
General
- Node.js (>= 14.x)
Windows
- VS Code, Windsurf, Cursor, IntelliJ IDEA, PyCharm or Antigravity installed and added to PATH
- CLI commands
code,windsurf,cursor,ij,pcoragmust be available in terminal
macOS
- VS Code, Windsurf, Cursor, IntelliJ IDEA, PyCharm or Antigravity installed in
/Applications - No CLI needed; uses
open -ainternally
📂 How It Works
- Stores repo names and paths in a local JSON file (
~/.openmate/repos.json) - Uses system commands to open editors
- macOS uses
open -a <AppName>for launching apps
OpenMate MCP
OpenMate MCP is available as a Model Context Protocol server.
Install
npm install -g openmate-mcpUse with Claude Desktop / Windsurf / Cursor / Antigravity
Add configuration:
{
"mcpServers": {
"openmate": {
"command": "openmate-mcp"
}
}
}More info here.
📝 License
MIT License © 2025 Pai
