Metadata-Version: 2.4
Name: cecli-dev
Version: 0.99.2
Summary: we also can't pronounce cecli
Project-URL: Homepage, https://github.com/dwash96/cecli
Project-URL: Documentation, https://github.com/dwash96/cecli
Project-URL: Repository, https://github.com/dwash96/cecli
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python
Classifier: Topic :: Software Development
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE.txt
Requires-Dist: pydub>=0.25.1
Requires-Dist: configargparse>=1.7.1
Requires-Dist: GitPython>=3.1.45
Requires-Dist: jsonschema>=4.25.0
Requires-Dist: rich>=14.1.0
Requires-Dist: prompt_toolkit
Requires-Dist: backoff>=2.2.1
Requires-Dist: pathspec>=0.12.1
Requires-Dist: diskcache>=5.6.3
Requires-Dist: grep_ast
Requires-Dist: packaging>=25.0
Requires-Dist: sounddevice>=0.5.2
Requires-Dist: soundfile>=0.13.1
Requires-Dist: beautifulsoup4>=4.13.4
Requires-Dist: PyYAML>=6.0.2
Requires-Dist: diff-match-patch>=20241021
Requires-Dist: pypandoc>=1.15
Requires-Dist: litellm!=1.82.7,!=1.82.8,>=1.80.11
Requires-Dist: flake8>=7.3.0
Requires-Dist: importlib_resources
Requires-Dist: pyperclip>=1.9.0
Requires-Dist: pexpect>=4.9.0
Requires-Dist: json5>=0.12.0
Requires-Dist: psutil>=7.0.0
Requires-Dist: watchfiles>=1.1.0
Requires-Dist: socksio>=1.0.0
Requires-Dist: pillow>=11.3.0
Requires-Dist: shtab>=1.7.2
Requires-Dist: oslex>=0.1.3
Requires-Dist: mcp>=1.24.0
Requires-Dist: textual>=6.0.0
Requires-Dist: tomlkit>=0.14.0
Requires-Dist: truststore
Requires-Dist: xxhash>=3.6.0
Requires-Dist: rustworkx>=0.15.0
Requires-Dist: scipy>=1.15.3
Requires-Dist: importlib-metadata>=7.2.1
Requires-Dist: tomli>=2.3.0; python_version <= "3.10"
Requires-Dist: tree-sitter==0.23.2; python_version < "3.10"
Requires-Dist: tree-sitter>=0.25.1; python_version >= "3.10"
Provides-Extra: dev
Requires-Dist: pytest; extra == "dev"
Requires-Dist: pytest-asyncio; extra == "dev"
Requires-Dist: pytest-env; extra == "dev"
Requires-Dist: pytest-mock; extra == "dev"
Requires-Dist: pip-tools; extra == "dev"
Requires-Dist: lox; extra == "dev"
Requires-Dist: matplotlib; extra == "dev"
Requires-Dist: pandas; extra == "dev"
Requires-Dist: typer; extra == "dev"
Requires-Dist: imgcat; extra == "dev"
Requires-Dist: pre-commit; extra == "dev"
Requires-Dist: cogapp; extra == "dev"
Requires-Dist: semver; extra == "dev"
Requires-Dist: codespell; extra == "dev"
Requires-Dist: uv; extra == "dev"
Requires-Dist: memray; extra == "dev"
Requires-Dist: objgraph; extra == "dev"
Provides-Extra: help
Requires-Dist: llama-index-embeddings-huggingface; extra == "help"
Requires-Dist: numpy>=1.26.4; extra == "help"
Provides-Extra: playwright
Requires-Dist: playwright; extra == "playwright"
Provides-Extra: tui
Dynamic: license-file

## Why `cecli`?

`cecli` (probably pronounced like "Cecily") is yet another cli agent crafted for extensibility and customization. Originally a fork of the [Aider](https://cecli.dev/) AI pair programming tool, we aim to make agentic coding as maximally effective as it can be based on the growing capabilities of large language models.

We aim to foster an open, collaborative ecosystem where new features, experiments, and improvements can be developed and shared rapidly. We believe in the principles of FOSS and actively welcome contributors of all skill levels.

If you are looking for bleeding-edge features or want to get your hands dirty with the internals of an AI coding agent, here's your sign.

LLMs are a part of our lives from here on out so join us in learning about and crafting the future.

### Links

[Discord Chat](https://discord.gg/AX9ZEA7nJn) 🞄
[Changelog](https://github.com/dwash96/cecli/blob/main/CHANGELOG.md) 🞄
[Issue Queue](https://github.com/dwash96/cecli/issues)

## Documentation/Other Notes:

* [Agent Mode](https://github.com/dwash96/cecli/blob/main/cecli/website/docs/config/agent-mode.md)
* [MCP Configuration](https://github.com/dwash96/cecli/blob/main/cecli/website/docs/config/mcp.md)
* [TUI Configuration](https://github.com/dwash96/cecli/blob/main/cecli/website/docs/config/tui.md)
* [Skills](https://github.com/dwash96/cecli/blob/main/cecli/website/docs/config/skills.md)
* [Session Management](https://github.com/dwash96/cecli/blob/main/cecli/website/docs/sessions.md)
* [Hooks](https://github.com/dwash96/cecli/blob/main/cecli/website/docs/config/hooks.md)
* [Workspaces](https://github.com/dwash96/cecli/blob/main/cecli/website/docs/config/workspaces.md)
* [Custom Commands](https://github.com/dwash96/cecli/blob/main/cecli/website/docs/config/custom-commands.md)
* [Custom System Prompts](https://github.com/dwash96/cecli/blob/main/cecli/website/docs/config/custom-system-prompts.md)
* [Custom Tools](https://github.com/dwash96/cecli/blob/main/cecli/website/docs/config/agent-mode.md#creating-custom-tools)
* [Advanced Model Configuration](https://github.com/dwash96/cecli/blob/main/cecli/website/docs/config/model-aliases.md#advanced-model-settings)
* [Additional Documentation](https://cecli.dev/)

## Installation Instructions
This project can be installed using several methods:

### Package Installation
```bash
pip install cecli-dev
```

or

```bash
uv pip install --native-tls cecli-dev
```

The package exports a `cecli` command that can start the application

### 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

## Configuration

The documentation above contains the full set of allowed configuration options
but I highly recommend using an `.cecli.conf.yml` file. A good place to get started is:

```yaml
model: <model of your choice>
agent: true
auto-commits: true
auto-save: true
auto-load: false
cache-prompts: true
check-update: true
debug: false
enable-context-compaction: true
context-compaction-max-tokens: 0.8
env-file: .cecli.env
show-model-warnings: true
use-enhanced-map: true
watch-files: false
tui: true

agent-config:
  large_file_token_threshold: 8192
  skip_cli_confirmations: false

mcp-servers:
  mcpServers:
    context7:
      transport: http
      url: https://mcp.context7.com/mcp
```

Use the adjacent .cecli.env file to store model api keys as environment variables, e.g:

```
ANTHROPIC_API_KEY="..."
GEMINI_API_KEY="..."
OPENAI_API_KEY="..."
OPENROUTER_API_KEY="..."
DEEPSEEK_API_KEY="..."
```

### Run Program

If you are in the directory with your .cecli.conf.yml file, then simply running `cecli` will start the agent with your configuration. For best results, since terminal emulators can be finicky, we highly suggest running:

```bash
cecli --terminal-setup
```

On first run to configure keybindings for the program (notably `shift+enter`). Support for terminals is ongoing so feel free to make a github issue or chat in the discord for us to figure out what's needed to support automatically setting up a given terminal.

If you want additional sandboxing, we publish a docker container that can be ran as follows:

```bash
docker pull dustinwashington/cecli
docker run \
  -it \
  --user $(id -u):$(id -g) \
  --volume $(pwd):/app \
  --volume $(pwd)/.cecli.conf.yml:/.cecli.conf.yml \
  --volume $(pwd)/.cecli.env:/.cecli.env \
  dustinwashington/cecli \
  --config /.cecli.conf.yml
  --env-file /.cecli.env
```

This command will make sure all commands ran by the coding agent happen in context of the docker container to protect the host file system from any infamous agentic mishap

## Project Roadmap/Goals

The current priorities are to improve core capabilities and user experience of the `cecli` project

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/dwash96/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](https://github.com/dwash96/cecli/issues/46)
  * [ ] Develop AST-based search capabilities
  * [x] Enhance file search with ripgrep integration
  * [ ] Implement RAG (Retrieval-Augmented Generation) for better code retrieval
  * [ ] Build an explicit workflow and local tooling for internal discovery mechanisms

4. **Context Delivery** - [Discussion](https://github.com/dwash96/cecli/issues/47)
  * [ ] Use workflow for internal discovery to better target file snippets needed for specific tasks
  * [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/dwash96/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/dwash96/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.
  * [ ] Add a RAG tool for the model to ask questions about the codebase
  * [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**
  * [ ] Add `/fork` and `/rejoin` commands to manually manage parts of the conversation history
  * [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
  * [ ] Add a `spawn` tool that launches a sub agent as a background command that the parent model waits for to finish
  * [ ] 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** 
  * [ ] Update compaction to use observational memory sub agent calls to generate decision records that are used as the compaction basis
  * [ ] Persist decision records to disk for sessions with some settings for managing lifetimes of such persistence
  * [ ] Integrate RLM to extract information from decision records on disk and other definable notes
  * [ ] 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)

 @paul-gauthier (https://github.com/dwash96/cecli/commits/main?author=paul-gauthier)
 @dwash96 (https://github.com/dwash96/cecli/commits/main?author=dwash96)
 @tekacs (https://github.com/dwash96/cecli/commits/main?author=tekacs)
 @ErichBSchulz (https://github.com/dwash96/cecli/commits/main?author=ErichBSchulz)

 @ei-grad (https://github.com/dwash96/cecli/commits/main?author=ei-grad)
 @joshuavial (https://github.com/dwash96/cecli/commits/main?author=joshuavial)
 @chrisnestrud (https://github.com/dwash96/cecli/commits/main?author=chrisnestrud)
 @chr15m (https://github.com/dwash96/cecli/commits/main?author=chr15m)

 @johbo (https://github.com/dwash96/cecli/commits/main?author=johbo)
 @fry69 (https://github.com/dwash96/cecli/commits/main?author=fry69)
 @quinlanjager (https://github.com/dwash96/cecli/commits/main?author=quinlanjager)
 @caseymcc (https://github.com/dwash96/cecli/commits/main?author=caseymcc)

 @shladnik (https://github.com/dwash96/cecli/commits/main?author=shladnik)
 @jamwil (https://github.com/dwash96/cecli/commits/main?author=jamwil)
 @itlackey (https://github.com/dwash96/cecli/commits/main?author=itlackey)
 @tomjuggler (https://github.com/dwash96/cecli/commits/main?author=tomjuggler)

 @szmania (https://github.com/dwash96/cecli/commits/main?author=szmania)
 @vk4s (https://github.com/dwash96/cecli/commits/main?author=vk4s)
 @titusz (https://github.com/dwash96/cecli/commits/main?author=titusz)
 @bphd (https://github.com/dwash96/cecli/commits/main?author=bphd)

 @daniel-vainsencher (https://github.com/dwash96/cecli/commits/main?author=daniel-vainsencher)
 @1broseidon (https://github.com/dwash96/cecli/commits/main?author=1broseidon)
 @akaihola (https://github.com/dwash96/cecli/commits/main?author=akaihola)
 @jalammar (https://github.com/dwash96/cecli/commits/main?author=jalammar)

 @schpet (https://github.com/dwash96/cecli/commits/main?author=schpet)
 @iamFIREcracker (https://github.com/dwash96/cecli/commits/main?author=iamFIREcracker)
 JV
 @KennyDizi (https://github.com/dwash96/cecli/commits/main?author=KennyDizi)

 @ivanfioravanti (https://github.com/dwash96/cecli/commits/main?author=ivanfioravanti)
 @mdeweerd (https://github.com/dwash96/cecli/commits/main?author=mdeweerd)
 @itsmeknt (https://github.com/dwash96/cecli/commits/main?author=itsmeknt)
 @fahmad91 (https://github.com/dwash96/cecli/commits/main?author=fahmad91)

 @cheahjs (https://github.com/dwash96/cecli/commits/main?author=cheahjs)
 @youknow04 (https://github.com/dwash96/cecli/commits/main?author=youknow04)
 @pjcreath (https://github.com/dwash96/cecli/commits/main?author=pjcreath)
 @pcamp (https://github.com/dwash96/cecli/commits/main?author=pcamp)

 @miradnanali (https://github.com/dwash96/cecli/commits/main?author=miradnanali)
 @o-nix (https://github.com/dwash96/cecli/commits/main?author=o-nix)
 Jonathan Ellis
 @codeofdusk (https://github.com/dwash96/cecli/commits/main?author=codeofdusk)

 @claui (https://github.com/dwash96/cecli/commits/main?author=claui)
 @jpshackelford (https://github.com/dwash96/cecli/commits/main?author=jpshackelford)
 @Taik (https://github.com/dwash96/cecli/commits/main?author=Taik)
 @Hambaobao (https://github.com/dwash96/cecli/commits/main?author=Hambaobao)

 @therealmarv (https://github.com/dwash96/cecli/commits/main?author=therealmarv)
 @muravvv (https://github.com/dwash96/cecli/commits/main?author=muravvv)
 @hypn4 (https://github.com/dwash96/cecli/commits/main?author=hypn4)
 @gmoz22 (https://github.com/dwash96/cecli/commits/main?author=gmoz22)

 @contributor (https://github.com/dwash96/cecli/commits/main?author=contributor)
 @ctoth (https://github.com/dwash96/cecli/commits/main?author=ctoth)
 @thehunmonkgroup (https://github.com/dwash96/cecli/commits/main?author=thehunmonkgroup)
 @gcp (https://github.com/dwash96/cecli/commits/main?author=gcp)

 @sentienthouseplant (https://github.com/dwash96/cecli/commits/main?author=sentienthouseplant)
 @ktakayama (https://github.com/dwash96/cecli/commits/main?author=ktakayama)
 @lreeves (https://github.com/dwash96/cecli/commits/main?author=lreeves)
 @nims11 (https://github.com/dwash96/cecli/commits/main?author=nims11)

 @preynal (https://github.com/dwash96/cecli/commits/main?author=preynal)
 @tgbender (https://github.com/dwash96/cecli/commits/main?author=tgbender)
 @apaz-cli (https://github.com/dwash96/cecli/commits/main?author=apaz-cli)
 Alexander Kjeldaas

 @zhyu (https://github.com/dwash96/cecli/commits/main?author=zhyu)
 Yutaka Matsubara
 @burnettk (https://github.com/dwash96/cecli/commits/main?author=burnettk)
 @cryptekbits (https://github.com/dwash96/cecli/commits/main?author=cryptekbits)

 @deansher (https://github.com/dwash96/cecli/commits/main?author=deansher)
 @kennyfrc (https://github.com/dwash96/cecli/commits/main?author=kennyfrc)
 @lentil32 (https://github.com/dwash96/cecli/commits/main?author=lentil32)
 @malkoG (https://github.com/dwash96/cecli/commits/main?author=malkoG)

 @mubashir1osmani (https://github.com/dwash96/cecli/commits/main?author=mubashir1osmani)
 @TimPut (https://github.com/dwash96/cecli/commits/main?author=TimPut)
 @zjy1412 (https://github.com/dwash96/cecli/commits/main?author=zjy1412)
 @savioursho (https://github.com/dwash96/cecli/commits/main?author=savioursho)

 @jayeshthk (https://github.com/dwash96/cecli/commits/main?author=jayeshthk)
 @susliko (https://github.com/dwash96/cecli/commits/main?author=susliko)
 @FeepingCreature (https://github.com/dwash96/cecli/commits/main?author=FeepingCreature)
 @misteral (https://github.com/dwash96/cecli/commits/main?author=misteral)

 @aelaguiz (https://github.com/dwash96/cecli/commits/main?author=aelaguiz)
 @DhirajBhakta (https://github.com/dwash96/cecli/commits/main?author=DhirajBhakta)
 @gopar (https://github.com/dwash96/cecli/commits/main?author=gopar)
 @eltociear (https://github.com/dwash96/cecli/commits/main?author=eltociear)

 @tao12345666333 (https://github.com/dwash96/cecli/commits/main?author=tao12345666333)
 @jpshack-at-palomar (https://github.com/dwash96/cecli/commits/main?author=jpshack-at-palomar)
 @smh (https://github.com/dwash96/cecli/commits/main?author=smh)
 @nhs000 (https://github.com/dwash96/cecli/commits/main?author=nhs000)

 @sannysanoff (https://github.com/dwash96/cecli/commits/main?author=sannysanoff)
 @ryanfreckleton (https://github.com/dwash96/cecli/commits/main?author=ryanfreckleton)
 @mbokinala (https://github.com/dwash96/cecli/commits/main?author=mbokinala)
 @yamitzky (https://github.com/dwash96/cecli/commits/main?author=yamitzky)

 @mobyvb (https://github.com/dwash96/cecli/commits/main?author=mobyvb)
 @ozapinq (https://github.com/dwash96/cecli/commits/main?author=ozapinq)
 @nicolasperez19 (https://github.com/dwash96/cecli/commits/main?author=nicolasperez19)
 @varchasgopalaswamy (https://github.com/dwash96/cecli/commits/main?author=varchasgopalaswamy)

 @ffluk3 (https://github.com/dwash96/cecli/commits/main?author=ffluk3)
 @tanavamsikrishna (https://github.com/dwash96/cecli/commits/main?author=tanavamsikrishna)
 @tylersatre (https://github.com/dwash96/cecli/commits/main?author=tylersatre)
 @pcgeek86 (https://github.com/dwash96/cecli/commits/main?author=pcgeek86)

 @tamirzb (https://github.com/dwash96/cecli/commits/main?author=tamirzb)
 @taha-yassine (https://github.com/dwash96/cecli/commits/main?author=taha-yassine)
 @strayer (https://github.com/dwash96/cecli/commits/main?author=strayer)
 @StevenTCramer (https://github.com/dwash96/cecli/commits/main?author=StevenTCramer)

 @Skountz (https://github.com/dwash96/cecli/commits/main?author=Skountz)
 @sestrella (https://github.com/dwash96/cecli/commits/main?author=sestrella)
 @rnevius (https://github.com/dwash96/cecli/commits/main?author=rnevius)
 @holoskii (https://github.com/dwash96/cecli/commits/main?author=holoskii)

 @Netzvamp (https://github.com/dwash96/cecli/commits/main?author=Netzvamp)
 @peterhadlaw (https://github.com/dwash96/cecli/commits/main?author=peterhadlaw)
 @pauldw (https://github.com/dwash96/cecli/commits/main?author=pauldw)
 @paulmaunders (https://github.com/dwash96/cecli/commits/main?author=paulmaunders)

 @omri123 (https://github.com/dwash96/cecli/commits/main?author=omri123)
 @MatthewZMD (https://github.com/dwash96/cecli/commits/main?author=MatthewZMD)
 @mbailey (https://github.com/dwash96/cecli/commits/main?author=mbailey)
 @golergka (https://github.com/dwash96/cecli/commits/main?author=golergka)

 @matfat55 (https://github.com/dwash96/cecli/commits/main?author=matfat55)
 @mtofano (https://github.com/dwash96/cecli/commits/main?author=mtofano)
 @maledorak (https://github.com/dwash96/cecli/commits/main?author=maledorak)
 @mlang (https://github.com/dwash96/cecli/commits/main?author=mlang)

 @marcomayer (https://github.com/dwash96/cecli/commits/main?author=marcomayer)
 @you-n-g (https://github.com/dwash96/cecli/commits/main?author=you-n-g)
 wangboxue
 @rti (https://github.com/dwash96/cecli/commits/main?author=rti)

 @prmbiy (https://github.com/dwash96/cecli/commits/main?author=prmbiy)
 @omarcinkonis (https://github.com/dwash96/cecli/commits/main?author=omarcinkonis)
 @Oct4Pie (https://github.com/dwash96/cecli/commits/main?author=Oct4Pie)
 @mark-asymbl (https://github.com/dwash96/cecli/commits/main?author=mark-asymbl)

 @yazgoo (https://github.com/dwash96/cecli/commits/main?author=yazgoo)
 michal.sliwa
 @mdklab (https://github.com/dwash96/cecli/commits/main?author=mdklab)
 @mario7421 (https://github.com/dwash96/cecli/commits/main?author=mario7421)

 liam.liu
 kwmiebach
 @kAIto47802 (https://github.com/dwash96/cecli/commits/main?author=kAIto47802)
 @jvmncs (https://github.com/dwash96/cecli/commits/main?author=jvmncs)

 @hydai (https://github.com/dwash96/cecli/commits/main?author=hydai)
 @hstoklosa (https://github.com/dwash96/cecli/commits/main?author=hstoklosa)
 @gordonlukch (https://github.com/dwash96/cecli/commits/main?author=gordonlukch)
 @develmusa (https://github.com/dwash96/cecli/commits/main?author=develmusa)

 @coredevorg (https://github.com/dwash96/cecli/commits/main?author=coredevorg)
 @cantalupo555 (https://github.com/dwash96/cecli/commits/main?author=cantalupo555)
 @caetanominuzzo (https://github.com/dwash96/cecli/commits/main?author=caetanominuzzo)
 @yzx9 (https://github.com/dwash96/cecli/commits/main?author=yzx9)

 @zackees (https://github.com/dwash96/cecli/commits/main?author=zackees)
 @wietsevenema (https://github.com/dwash96/cecli/commits/main?author=wietsevenema)
 @krewenki (https://github.com/dwash96/cecli/commits/main?author=krewenki)
 @vinnymac (https://github.com/dwash96/cecli/commits/main?author=vinnymac)

 @szepeviktor (https://github.com/dwash96/cecli/commits/main?author=szepeviktor)
 @lattwood (https://github.com/dwash96/cecli/commits/main?author=lattwood)
 @spdustin (https://github.com/dwash96/cecli/commits/main?author=spdustin)
 @henderkes (https://github.com/dwash96/cecli/commits/main?author=henderkes)

 @daysm (https://github.com/dwash96/cecli/commits/main?author=daysm)
 @devriesd (https://github.com/dwash96/cecli/commits/main?author=devriesd)
 @daniel-sc (https://github.com/dwash96/cecli/commits/main?author=daniel-sc)
 @damms005 (https://github.com/dwash96/cecli/commits/main?author=damms005)

 @curran (https://github.com/dwash96/cecli/commits/main?author=curran)
 @cclauss (https://github.com/dwash96/cecli/commits/main?author=cclauss)
 @cjoach (https://github.com/dwash96/cecli/commits/main?author=cjoach)
 @csala (https://github.com/dwash96/cecli/commits/main?author=csala)

 @bexelbie (https://github.com/dwash96/cecli/commits/main?author=bexelbie)
 @branchv (https://github.com/dwash96/cecli/commits/main?author=branchv)
 @bkowalik (https://github.com/dwash96/cecli/commits/main?author=bkowalik)
 @h0x91b (https://github.com/dwash96/cecli/commits/main?author=h0x91b)

 @aroffe99 (https://github.com/dwash96/cecli/commits/main?author=aroffe99)
 @banjo (https://github.com/dwash96/cecli/commits/main?author=banjo)
 @anjor (https://github.com/dwash96/cecli/commits/main?author=anjor)
 @andreypopp (https://github.com/dwash96/cecli/commits/main?author=andreypopp)

 @ivnvxd (https://github.com/dwash96/cecli/commits/main?author=ivnvxd)
 @andreakeesys (https://github.com/dwash96/cecli/commits/main?author=andreakeesys)
 @ameramayreh (https://github.com/dwash96/cecli/commits/main?author=ameramayreh)
 @a1ooha (https://github.com/dwash96/cecli/commits/main?author=a1ooha)

 @maliayas (https://github.com/dwash96/cecli/commits/main?author=maliayas)
 @akirak (https://github.com/dwash96/cecli/commits/main?author=akirak)
 @adrianlzt (https://github.com/dwash96/cecli/commits/main?author=adrianlzt)
 @codefromthecrypt (https://github.com/dwash96/cecli/commits/main?author=codefromthecrypt)

 @aweis89 (https://github.com/dwash96/cecli/commits/main?author=aweis89)
 @aj47 (https://github.com/dwash96/cecli/commits/main?author=aj47)
 @noitcudni (https://github.com/dwash96/cecli/commits/main?author=noitcudni)
 @solatis (https://github.com/dwash96/cecli/commits/main?author=solatis)

 @webkonstantin (https://github.com/dwash96/cecli/commits/main?author=webkonstantin)
 @khulnasoft-bot (https://github.com/dwash96/cecli/commits/main?author=khulnasoft-bot)
 @KebobZ (https://github.com/dwash96/cecli/commits/main?author=KebobZ)
 @acro5piano (https://github.com/dwash96/cecli/commits/main?author=acro5piano)

 @josx (https://github.com/dwash96/cecli/commits/main?author=josx)
 @joshvera (https://github.com/dwash96/cecli/commits/main?author=joshvera)
 @jklina (https://github.com/dwash96/cecli/commits/main?author=jklina)
 @jkeys089 (https://github.com/dwash96/cecli/commits/main?author=jkeys089)

 @johanvts (https://github.com/dwash96/cecli/commits/main?author=johanvts)
 Jim White
 @gengjiawen (https://github.com/dwash96/cecli/commits/main?author=gengjiawen)
 @jevon (https://github.com/dwash96/cecli/commits/main?author=jevon)

 @jesstelford (https://github.com/dwash96/cecli/commits/main?author=jesstelford)
 @JeongJuhyeon (https://github.com/dwash96/cecli/commits/main?author=JeongJuhyeon)
 @jackhallam (https://github.com/dwash96/cecli/commits/main?author=jackhallam)
 @Mushoz (https://github.com/dwash96/cecli/commits/main?author=Mushoz)

 @zestysoft (https://github.com/dwash96/cecli/commits/main?author=zestysoft)
 Henry Fraser
 @gwpl (https://github.com/dwash96/cecli/commits/main?author=gwpl)
 @garrett-hopper (https://github.com/dwash96/cecli/commits/main?author=garrett-hopper)

 @filiptrplan (https://github.com/dwash96/cecli/commits/main?author=filiptrplan)
 @FelixLisczyk (https://github.com/dwash96/cecli/commits/main?author=FelixLisczyk)
 @evnoj (https://github.com/dwash96/cecli/commits/main?author=evnoj)
 @erykwieliczko (https://github.com/dwash96/cecli/commits/main?author=erykwieliczko)

 @elohmeier (https://github.com/dwash96/cecli/commits/main?author=elohmeier)
 @emmanuel-ferdman (https://github.com/dwash96/cecli/commits/main?author=emmanuel-ferdman)

