`cecli` is yet another cli agent crafted for extensibility and customization. For folks who like seeing under the hood, welcome to the fold. Made for nerds, geeks, and the extremely curious.
### Links
[Documentation](https://cecli.dev/docs/)
[Discord Chat](https://discord.gg/AX9ZEA7nJn)
[Issue Queue](https://github.com/cecli-dev/cecli/issues)
## Installation Instructions
All installation methods export a `cecli` command that can start the application. This project can be installed using several methods:
#### Linux & Mac
Use curl to download the script and execute it with sh:
```bash
curl -LsSf https://cecli.dev/install.sh | sh
```
If your system doesn't have curl, you can use wget:
```bash
wget -qO- https://cecli.dev/install.sh | sh
```
#### Windows
```powershell
powershell -ExecutionPolicy ByPass -c "irm https://cecli.dev/install.ps1 | iex"
```
### Package Installation
```bash
uv pip install --native-tls cecli-dev
```
or
```bash
pip install cecli-dev
```
### Tool Installation
```bash
uv tool install --native-tls --python python3.12 cecli-dev
```
Use the tool installation so cecli doesn't interfere with your development environment
## Features and Documentation:
* [Agent Mode](https://github.com/cecli-dev/cecli/blob/main/cecli/website/docs/config/agent-mode.md)
* [MCP Configuration](https://github.com/cecli-dev/cecli/blob/main/cecli/website/docs/config/mcp.md)
* [Skills](https://github.com/cecli-dev/cecli/blob/main/cecli/website/docs/config/skills.md)
* [Subagents](https://github.com/cecli-dev/cecli/blob/main/cecli/website/docs/config/subagents.md)
* [Persistent Memory](https://github.com/cecli-dev/cecli/blob/main/cecli/website/docs/config/persistent-memory.md)
* [Session Management](https://github.com/cecli-dev/cecli/blob/main/cecli/website/docs/sessions.md)
* [Hooks](https://github.com/cecli-dev/cecli/blob/main/cecli/website/docs/config/hooks.md)
* [TUI Configuration](https://github.com/cecli-dev/cecli/blob/main/cecli/website/docs/config/tui.md)
* [Agent Client Protocol (ACP)](https://github.com/cecli-dev/cecli/blob/main/cecli/website/docs/config/api.md)
* [Workspaces](https://github.com/cecli-dev/cecli/blob/main/cecli/website/docs/config/workspaces.md)
* [Custom Commands](https://github.com/cecli-dev/cecli/blob/main/cecli/website/docs/config/custom-commands.md)
* [Custom System Prompts](https://github.com/cecli-dev/cecli/blob/main/cecli/website/docs/config/custom-system-prompts.md)
* [Custom Tools](https://github.com/cecli-dev/cecli/blob/main/cecli/website/docs/config/agent-mode.md#creating-custom-tools)
* [Advanced Model Configuration](https://github.com/cecli-dev/cecli/blob/main/cecli/website/docs/config/model-aliases.md#advanced-model-settings)
[Additional Documentation](https://cecli.dev/)
## Project Roadmap/Goals
1. **Base Asynchronicity (cecli coroutine-experiment branch)**
* [x] Refactor codebase to have the main loop run asynchronously
* [x] Update test harness to work with new asynchronous methods
2. **Repo Map Accuracy** - [Discussion](https://github.com/cecli-dev/cecli/issues/45)
* [x] [Bias page ranking toward active/editable files in repo map parsing](https://github.com/Aider-AI/aider/issues/2405)
* [x] [Include import information in repo map for richer context](https://github.com/Aider-AI/aider/issues/2688)
* [x] [Handle non-unique symbols that break down in large codebases](https://github.com/Aider-AI/aider/issues/2341)
3. **Context Discovery** - [Discussion - Done with Cymbal Library](https://github.com/cecli-dev/cecli/issues/46)
* [x] Develop AST-based search capabilities
* [x] Enhance file search with ripgrep integration
* [x] Implement RAG (Retrieval-Augmented Generation) for better code retrieval
* [x] Build an explicit workflow and local tooling for internal discovery mechanisms
4. **Context Delivery** - [Discussion](https://github.com/cecli-dev/cecli/issues/47)
* [x] Use workflow for internal discovery to better target file snippets needed for specific tasks (ExploreCode and ReadRange)
* [x] Add support for partial files and code snippets in model completion messages
* [x] Update message request structure for optimal caching
5. **TUI Experience** - [Discussion](https://github.com/cecli-dev/cecli/issues/48)
* [x] Add a full TUI (probably using textual) to have a visual interface competitive with the other coding agent terminal programs
* [x] Re-integrate pretty output formatting
* [x] Implement a response area, a prompt area with current auto completion capabilities, and a helper area for managing utility commands
6. **Agent Mode** - [Discussion](https://github.com/cecli-dev/cecli/issues/111)
* [x] Renaming "navigator mode" to "agent mode" for simplicity
* [x] Add an explicit "finished" internal tool
* [x] Add a configuration json setting for agent mode to specify allowed local tools to use, tool call limits, etc.
* [x] Make the system prompts more aggressive about removing unneeded files/content from the context
* [x] Add a plugin-like system for allowing agent mode to use user-defined tools in simple python files
* [x] Add a dynamic tool discovery tool to allow the system to have only the tools it needs in context
7. **Sub Agents**
* [x] Add `/invoke-agent` command to manually branch a sub agent and return a summary to the main context
* [x] Add an instance-able view of the conversation system so sub agents get their own context and workspaces
* [x] Modify coder classes to have discrete identifiers for themselves/management utilities for them to have their own slices of the world
* [x] Refactor global files like todo lists to live inside instance folders to avoid state conflicts
* [x] Add a `Delegate` tool that launches a sub agent as a background command that the parent model waits for to finish
* [x] Add visibility into active sub agent calls in TUI
8. **Hooks**
* [x] Add hooks base class for user defined python hooks with an execute method with type and priority settings
* [x] Add hook manager that can accept user defined files and command line commands
* [x] Integrate hook manager with coder classes with hooks for `start`, `end`, `on_message`, `end_message`, `pre_tool`, and `post_tool`
9. **Efficient File Editing**
* [x] Explore use of hashline file representation for more targeted file editing
* [x] Assuming viability, update SEARCH part of SEARCH/REPLACE with hashline identification (Done with new edit format)
* [x] Update agent mode edit tools to work with hashline identification
* [x] Update internal file diff representation to support hashline propagation
10. **Dynamic Context Management (Accomplished with subagents, orchestrate, and the facts db)**
* [x] Update compaction to use observational memory sub agent calls to generate decision records that are used as the compaction basis
* [x] Persist decision records to disk for sessions with some settings for managing lifetimes of such persistence
* [x] Integrate RLM-like facility to extract information from decision records on disk and other definable notes
* [x] Add a "describe" tool that launches a sub agent workflow that populates an RLM call's context with:
* Current Conversation History
* Past Decision Records
* Repo Map Found Files
11. **Quality of Life**
* [ ] Add hot keys support for running repeatable commands like switching between preferred models
* [ ] Unified error message logging inside of `.cecli` directory
### All Contributors (Both Cecli and Aider main)