An AI-powered code agent for workspace operations
Project description
OpenCursor
An AI-powered code agent for workspace operations with a rich terminal UI.
Overview
OpenCursor is a terminal-based AI coding assistant that helps you navigate, understand, and modify codebases. It provides both autonomous and interactive agent modes, along with direct LLM chat capabilities. The tool uses a variety of AI-powered features to help you work with code more efficiently.
Features
๐ค Local LLM Support - Works with Ollama models locally
๐ Autonomous Mode - Complete tasks without intervention
๐ Playwright Web Search - No API limits or blocking
๐ Full Editor Toolkit - Search, edit, delete files & run commands
๐ Transparent UI - See exactly what the model is doing
Example Queries
- "Create a simple Flask API with user authentication"
- "Refactor this React component to use hooks instead of classes"
- "Find all usages of this function and update its parameters"
- "Analyze this codebase and explain its architecture"
- "Debug why this test is failing and propose a fix"
- "Research and implement the latest best practices for API security"
Installation
Using pip (recommended)
pip install -U opencursor
Using Poetry
# Clone the repository
git clone https://github.com/santhoshkammari/OpenCursor.git
cd OpenCursor
# Install with Poetry
poetry install
Usage
Once installed, you can use OpenCursor from the command line:
# Basic usage
opencursor
# Specify a workspace directory
opencursor -w /path/to/workspace
# Use a different model
opencursor -m "gpt-4"
# Start with an initial query
opencursor -q "Create a simple Flask app"
Command-line Options
-w, --workspace: Path to the workspace directory (default: current directory)-q, --query: Initial query to process-m, --model: LLM model to use (default: qwen3_14b_q6k:latest)-H, --host: Ollama API host URL (default: http://192.168.170.76:11434)--no-thinking: Disable thinking process in responses
Commands
OpenCursor provides several commands that you can use within the application:
/agent <message>: Send a message to the agent (autonomous mode)/interactive <message>: Send a message to the agent (interactive mode)/chat <message>: Chat with the LLM directly (no tools)/add <filepath>: Add a file to the chat context/drop <filepath>: Remove a file from the chat context/clear: Clear all files from the chat context/repomap: Show a map of the repository/focus <filepath>: Focus on a specific file/diff <filepath>: Show git diff for a file with syntax highlighting/help: Show help information/exit: Exit the application
You can also use shortcuts:
@filepathto quickly add a file to the context
Development
Project Structure
opencursor/
โโโ code_agent/
โ โโโ src/
โ โ โโโ app.py # Main application with UI
โ โ โโโ agent.py # Agent implementation
โ โ โโโ llm.py # LLM client
โ โ โโโ tools.py # Tool implementations
โ โ โโโ prompts.py # System prompts
โ โ โโโ tool_playwright.py # Web search tools
โ โ โโโ tool_browser.py # Browser tools
โ โโโ cli_entry.py # CLI entry point
โ โโโ __init__.py
โโโ pyproject.toml # Poetry configuration
โโโ requirements.txt # Dependencies
โโโ README.md
Core Components
- OpenCursorApp: Main application class that handles the UI and command processing
- CodeAgent: Handles autonomous and interactive modes, manages tool execution
- LLMClient: Interacts with the Ollama API, manages conversation history
- Tools: Implements various tools for file operations, code analysis, etc.
Setting Up Development Environment
# Clone the repository
git clone https://github.com/santhoshkammari/OpenCursor.git
cd OpenCursor
# Install dependencies
pip install -e .
# or with poetry
poetry install
# Run the application
python -m code_agent.cli_entry
Dependencies
- Python 3.11+
- Rich: Terminal UI and formatting
- Ollama: LLM API client
- Prompt_toolkit: Command completion and input handling
- Playwright: Web search functionality
- SentenceTransformer: Semantic code search
License
MIT
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file opencursor-0.0.26.tar.gz.
File metadata
- Download URL: opencursor-0.0.26.tar.gz
- Upload date:
- Size: 138.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.11.0rc1 Linux/6.8.0-59-generic
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f79dc24287a507992ea3fbaea72bd3a120c7f4f16981a242a2ed3622fd090634
|
|
| MD5 |
cf3b3cd4debe047a397a679855ae18cd
|
|
| BLAKE2b-256 |
19582693bf4c87dadecb7c0d80b94bad450a826b2f236cb7932300072a2531c6
|
File details
Details for the file opencursor-0.0.26-py3-none-any.whl.
File metadata
- Download URL: opencursor-0.0.26-py3-none-any.whl
- Upload date:
- Size: 143.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.11.0rc1 Linux/6.8.0-59-generic
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1dae9ea9934b459f301a4af053bcefe2546eaa5f7195ee60b8addfe18a76af17
|
|
| MD5 |
97f255d59a491e39647cde444c139def
|
|
| BLAKE2b-256 |
cd88a5e873d9d7257990c45a2f01446d96e146db01234961472441b01a2703d9
|