An open API service indexing awesome lists of open source software.

https://github.com/ripan-roy/locopilot-ai

Open-source, local-first agentic coding assistant. Automate, plan, and edit codebases using local LLMs, advanced memory, and interactive shell commandsβ€”all 100% private and extensible. πŸš€
https://github.com/ripan-roy/locopilot-ai

code-cli llm python shell

Last synced: about 2 months ago
JSON representation

Open-source, local-first agentic coding assistant. Automate, plan, and edit codebases using local LLMs, advanced memory, and interactive shell commandsβ€”all 100% private and extensible. πŸš€

Awesome Lists containing this project

README

          

# πŸš€ Locopilot

[![PyPI version](https://badge.fury.io/py/locopilot.svg)](https://badge.fury.io/py/locopilot)
[![Python](https://img.shields.io/pypi/pyversions/locopilot.svg)](https://pypi.org/project/locopilot/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![GitHub stars](https://img.shields.io/github/stars/Ripan-Roy/locopilot-ai.svg?style=social&label=Star)](https://github.com/Ripan-Roy/locopilot-ai)


Locopilot Demo

Locopilot is an open-source, local-first, agentic coding assistant built for developers. It leverages local LLMs (via Ollama), and advanced memory management using LangGraph, to automate, plan, and edit codebasesβ€”all inside an interactive shell.

- **Private**: All code and prompts stay on your machine.
- **Agentic**: Locopilot plans, edits, iterates, and manages your coding tasks.
- **Interactive**: Drop into a shell, enter tasks or slash commands, and steer the agent in real time.
- **Memory-Efficient**: Advanced memory compression via LangGraph for "infinite" context.
- **Extensible**: Change models, modes, and add custom tools or plugins on the fly.

## Table of Contents

- [Features](#features)
- [How It Works](#how-it-works)
- [Architecture](#architecture)
- [Getting Started](#getting-started)
- [Usage: Interactive Shell & Commands](#usage-interactive-shell--commands)
- [Project Structure](#project-structure)
- [Extensibility & Roadmap](#extensibility--roadmap)
- [Contributing](#contributing)
- [License](#license)

## ✨ Features

- **Local LLM Backend**: Bring your own Ollama server and code with any open-source LLM.
- **LangGraph Agent Workflow**: Plans, executes, edits, and compresses memory as a stateful, extensible graph.
- **Interactive Shell/REPL**: After init, drop into a chat-like agent terminalβ€”just type coding tasks or slash commands.
- **Slash Command Support**: `/model`, `/change-mode`, `/concise`, `/clear`, `/new`, `/end`, `/help`, and more.
- **Smart Memory Compression**: Automatically summarizes previous context using the LLM itself, supporting ultra-long sessions.
- **Configurable**: Models, modes, and summarization thresholds are all runtime-editable.
- **Pluggable Nodes**: Add file tools, planning modules, git ops, and vector-based retrieval easily.
- **(Planned) Git Integration**: Auto-commit, rollback, and view code diffs per agent step.

## ⚑️ How It Works

### 1. Initialization
Run `locopilot init` in your project root.
- Locopilot checks Ollama, prompts for model, sets up `.locopilot/config.yaml`.
- You're dropped into an interactive agent shell (REPL).

### 2. Agentic Workflow (via LangGraph)
Each user input is parsed:
- **Slash command** (`/model`, etc.) β†’ runs as a graph branch.
- **Normal prompt** (task) β†’ plans, edits, summarizes via a workflow graph:
```
User Task β†’ [Planning Node] β†’ [File Edit Node] β†’ [Memory Summarizer Node] β†’ (Repeat)
```
- Memory is managed with a LangGraph memory nodeβ€”summarizing, chunking, and compressing context as needed.

### 3. Session Management
- Change models, modes, or reset memory on the fly with slash commands.
- All state (memory, model, mode) persists during the session.

## πŸ—οΈ Architecture

Key components:

- **CLI Layer**: Typer-based CLI, launches shell (REPL), parses slash commands.
- **LangGraph Workflow**:
- **Nodes**: Planning, file edit, summarization, slash command handler, etc.
- **Edges**: Control session flow, branching between commands and prompts.
- **LLM Backend**:
- **Ollama**: For running CodeLlama, DeepSeek, etc.
- **Memory Layer**:
- LangChain/LangGraph memory objects (buffer, summary, vector, hybrid).
- Summarizes old context using the LLM to avoid hitting token/window limits.
- **Config/Project Layer**:
- `.locopilot/config.yaml` stores model/backend/session preferences.

### Stateful Graph Example:
```
[User Input]
|
+---------------+---------------+
| |
[Slash Command] [Prompt/Task]
| |
[Command Handler] [Plan]->[Edit]->[Summarize]->[Memory]
| |
END Loop
```

## πŸ›  Getting Started

### Requirements
- Python 3.8+
- Ollama running locally
- pip

### Install Locopilot

**Option 1: Install from PyPI (Recommended)**
```bash
pip install locopilot
```

**Option 2: Install from Source**
```bash
git clone https://github.com/Ripan-Roy/locopilot-ai.git
cd locopilot-backend
pip install -e .
```

### Start Your Local LLM

**Ollama:**
```bash
ollama serve
ollama pull codellama:latest
```

### Initialize and Enter the Agent Shell
```bash
locopilot init
```

This checks LLM backend, prompts for config, scans for project context, and launches the interactive shell.

## πŸ–₯️ Usage: Interactive Shell & Commands

After init, Locopilot enters a shell where you can type prompts and commands:

### Example Session
```
$ locopilot init
[βœ“] Ollama running. Model: codellama:latest
[βœ“] Project context initialized.

Locopilot Shell (mode: do):
> Add OAuth login to my Django app
[PLANNING] ...
[EDITING] ...
[MEMORY] ...

> /model
Current model: codellama:latest
Enter new model: deepseek-coder:latest
[βœ“] Model switched to deepseek-coder:latest

> /change-mode
Current mode: do
Available modes: do, refactor, explain, chat
Enter new mode: refactor
[βœ“] Mode set to refactor.

> Refactor the payment logic for clarity
...

> /concise
[βœ“] Context summarized and compressed.

> /clear
[βœ“] Session memory cleared.

> /new
[βœ“] New session started.

> /end
[βœ“] Session ended. Bye!
```

### Supported Slash Commands

| Command | Purpose |
|---------|---------|
| `/model` | Change LLM model/backend for current session |
| `/change-mode` | Switch between do, refactor, explain, chat modes |
| `/clear` | Clear all current context/memory |
| `/new` | Start a new session/project |
| `/end` | End the agent shell and exit |
| `/concise` | Force summarization/compression of current context |
| `/help` | Show help and command list |

Anything not starting with `/` is treated as a task in the current mode!

## πŸ—‚οΈ Project Structure

```
locopilot-backend/
β”œβ”€β”€ locopilot/ # Main package directory
β”‚ β”œβ”€β”€ __init__.py
β”‚ β”œβ”€β”€ core/ # Core functionality
β”‚ β”‚ β”œβ”€β”€ __init__.py
β”‚ β”‚ β”œβ”€β”€ agent.py # LangGraph workflow and nodes
β”‚ β”‚ β”œβ”€β”€ memory.py # Session/context memory management
β”‚ β”‚ └── executor.py # Plan execution engine
β”‚ β”œβ”€β”€ llm/ # LLM backend handling
β”‚ β”‚ β”œβ”€β”€ __init__.py
β”‚ β”‚ β”œβ”€β”€ connection.py # Ollama connection helpers
β”‚ β”‚ └── backends/ # Backend-specific implementations
β”‚ β”œβ”€β”€ cli/ # CLI components
β”‚ β”‚ β”œβ”€β”€ __init__.py
β”‚ β”‚ β”œβ”€β”€ app.py # CLI entrypoint, shell/REPL logic
β”‚ β”‚ └── commands/ # CLI command implementations
β”‚ └── utils/ # Utility functions
β”‚ β”œβ”€β”€ __init__.py
β”‚ └── file_ops.py # File operations, config helpers
β”œβ”€β”€ tests/ # Test suite
β”‚ β”œβ”€β”€ conftest.py
β”‚ β”œβ”€β”€ test_agent.py
β”‚ β”œβ”€β”€ test_basic.py
β”‚ β”œβ”€β”€ test_connection.py
β”‚ └── test_plan_executor.py
β”œβ”€β”€ scripts/ # Setup and utility scripts
β”‚ └── setup.sh
β”œβ”€β”€ docs/ # Documentation
β”œβ”€β”€ assets/ # Static assets
β”‚ └── locopilot-demo.png
β”œβ”€β”€ pyproject.toml # Package configuration
β”œβ”€β”€ requirements.txt # Dependencies
β”œβ”€β”€ README.md
└── LICENSE
```

## 🧠 Memory Management (with LangGraph)

- `ConversationBufferMemory` or `ConversationSummaryBufferMemory` is attached to the agent graph.
- As session context grows, old steps are summarized using the LLM and replaced in memory.
- This ensures Locopilot "remembers" key tasks, design decisions, and context for long sessions.
- Slash command `/concise` lets you summarize on demand.

## ⚑️ Extensibility & Roadmap

- **Editor Plugins**: VSCode, Vim, JetBrains, etc.
- **Project-Aware RAG**: Integrate vector DBs (Chroma, Qdrant) for smart codebase retrieval.
- **(Planned) Git Integration**: Auto-commit, diff, and rollback per step.
- **Save/Load Sessions**: `/save`, `/load`, `/history` commands.
- **Custom Plugins/Nodes**: Add your own LangGraph nodes for tools or workflows.
- **Web/GUI Frontends**: Same agent core, different interface.

## 🀝 Contributing

- Fork and PRs are welcome!
- Open issues for bugs or feature requests.
- For major features (graph nodes, memory backends), see CONTRIBUTING.md (coming soon).

## πŸ“ License

MIT License. Use, fork, and extend as you wish!

## πŸ’‘ Inspiration

Locopilot is inspired by Copilot, Claude Code, Dev-GPT, OpenDevin, and the emerging open-source agentic ecosystemβ€”aiming to empower developers with private, supercharged, customizable AI tools.

## 🚦 Quickstart

```bash
# Install from PyPI
pip install locopilot

# Initialize in your project
locopilot init

# ... then just type your coding tasks and manage the session with slash commands!
```

**Links:**
- [PyPI Package](https://pypi.org/project/locopilot/)
- [GitHub Repository](https://github.com/Ripan-Roy/locopilot-ai)