kwaak 0.1.0

Run a team of autonomous agents on your code, right from your terminal
kwaak-0.1.0 is not a library.
Visit the last successful build: kwaak-0.19.0

CI Coverage Status Crate Badge Docs Badge Contributors Stargazers MIT License LinkedIn

What is Kwaak?

Always wanted to run a team of AI agents locally from your own machine? Kwaak provides a terminal interface to operate autonomous AI agents on your codebase.

<>

Powered by Swiftide, Kwaak is aware of your codebase and can answer questions about your code, find examples, write and execute code, create pull requests, and more. Unlike other tools, Kwaak is focussed on atonomous agents, and can run multiple agents at the same time.

[!CAUTION] Kwaak is in early development and can be considered alpha software. The project is under active development, expect breaking changes. Contributions, feedback, and bug reports are very welcome.

Features

  • Run multiple agents at the same time, each with their own copy of the code
  • Agents have access to your code, can use a variety of tools, and can be interact with the user
  • Currently only works with OpenAI. More are planned, the project is not tied to a single LLM.
  • Tools are safely executed in a docker based sandbox environment
  • Broad language support: Python, TypeScript/Javascript, Java, Ruby, and Rust. Language support is easily extendable, and limited to what Swiftide supports.
  • Rich terminal markdown rendering

Getting started

Requirements

Before you can run Kwaak, make sure you have Docker installed on your machine.

Kwaak expects a Dockerfile in the root of your project. This Dockerfile should contain all the dependencies required to test and run your code. Additionally, it expects the following to be present:

If you already have a Dockerfile for other purposes, you can either extend it or provide a new one and override the dockerfile path in the configuration.

For an example Dockerfile in Rust, see this projects Dockerfile

Additionally, you will need an OpenAI API key and a github token.

Installation and setup

Currently, Kwaak is not available on crates.io. You can install it by cloning the repository and running cargo install --path . in the root of the repository. Proper releases will be available soon.

Once installed, you can run kwaak --init in the project you want to use Kwaak in. This will create a kwaak.toml in your project root. You can edit this file to configure Kwaak.

After verifying the default configuration, one required step is to set up the test and coverage commands. There are also some optional settings you can consider.

Api keys can be prefixed by env:, text: and file: to read secrets from the environment, a text string, or a file respectively.

Running Kwaak

You can then run kwaak in the root of your project. This will start the Kwaak terminal interface. On initial bootup, Kwaak will index your codebase. This can take a while, depending on the size of your codebase. Once indexing has been completed once, subsequent startups will be faster.

Keybindings:

  • ctrl-s: Send the current message to the agent
  • ctrl-x: Exit the agent
  • ctrl-c: Exit kwaak
  • ctrl-n: Create a new agent
  • tab: Switch between agents

Example prompts

  • "Identify uncovered code paths, write a test for them, and create a pull request"
  • "Add technical documentation to the module foo, and create a pull request"
  • "Refactor the function bar to use a match statement, and create a pull request"
  • "Implement a function that calculates the nth fibonacci number, and create a pull request"

Roadmap

  • Support for more LLMs
  • Tools for code documentation
  • Different and specialized agents

Community

If you want to get more involved with kwaak, have questions or want to chat, you can find us on discord.

Contributing

If you have a great idea, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement".

Don't forget to give the project a star! Thanks again!

If you just want to contribute (bless you!), see our issues or join us on Discord.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'feat: Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

See CONTRIBUTING for more

License

Distributed under the MIT License. See LICENSE for more information.