diff --git a/.python-version b/.python-version index 2c07333..24ee5b1 100644 --- a/.python-version +++ b/.python-version @@ -1 +1 @@ -3.11 +3.13 diff --git a/README.md b/README.md index e69de29..43e74c7 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,83 @@ +# Devin - Your Personal AI Assistant + +Welcome to Devin, your very own Jarvis-inspired AI assistant! This project aims to create a +powerful, extensible AI system that can understand and respond to your questions while gradually +building up capabilities through tools and worker agents. + +## Project Overview + +Devin is designed to be a personal AI assistant that: +- Connects to local LLMs for natural language understanding and generation +- Responds to user questions in a conversational manner +- Scales from simple question answering to complex multi-agent workflows +- Provides a foundation for building sophisticated AI tools and systems + +## Getting Started + +### Prerequisites + +Before running Devin, you'll need to set up your local LLM environment. +Refer to the [Configuration](#configuration) section below. + +### Installation + +1. Clone/Fork this repository +1. Use UV to set up requirements and environment: +```bash +uv sync +``` + +### Running Devin + +To start Devin, simply run: +```bash +uv run main.py +``` + +This will initialize the AI assistant and begin listening for your questions. + +## Configuration + +Devin uses a configuration file to connect to your local LLM. +The configuration should be set up in `config.yaml` + +```yaml +llm: + model_path: "path/to/your/local/model" + api_base: "http://localhost:1234/v1" +``` + +### Local LLM Setup + +Devin currently supports connecting to local LLMs such as: +- [Ollama](https://ollama.com/) +- [LM Studio](https://lmstudio.ai/) +- [LocalAI](https://localai.io/) + +Make sure your chosen LLM is running and accessible before starting Devin. + +## Roadmap + +### Phase 1: Core Functionality +- [ ] Basic LLM connection and response +- [ ] Conversation history management +- [ ] Enhanced response formatting + +### Phase 2: Tool Integration +- [ ] Web search capabilities +- [ ] File system operations +- [ ] Code execution environment + +### Phase 3: Multi-Agent System +- [ ] Worker LLM coordination +- [ ] Task delegation and management +- [ ] Complex workflow automation + +## License + +TBC - non commercial / not for profit + +--- + +*Devin - Your Personal AI Assistant* +*Powered by local LLM technology* diff --git a/main.py b/main.py index 67625d9..e5934cd 100644 --- a/main.py +++ b/main.py @@ -1,5 +1,11 @@ +from rich import print, pretty +from rich.panel import Panel + def main(): print("Hello from devin!") + print("[italic red]Hello[/italic red] World!", locals()) + print(["Rich and pretty", True]) + print(Panel.fit("[bold yellow]Hi, I'm a Panel", border_style="red")) if __name__ == "__main__": diff --git a/pyproject.toml b/pyproject.toml index b688f68..88e6358 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "devin" version = "0.1.0" -description = "Add your description here" +description = "Devin is your very own AI command centre" readme = "README.md" -requires-python = ">=3.11" -dependencies = [] +requires-python = ">=3.13" +dependencies = ["rich>=14.1.0"] diff --git a/uv.lock b/uv.lock new file mode 100644 index 0000000..033da14 --- /dev/null +++ b/uv.lock @@ -0,0 +1,57 @@ +version = 1 +revision = 3 +requires-python = ">=3.13" + +[[package]] +name = "devin" +version = "0.1.0" +source = { virtual = "." } +dependencies = [ + { name = "rich" }, +] + +[package.metadata] +requires-dist = [{ name = "rich", specifier = ">=14.1.0" }] + +[[package]] +name = "markdown-it-py" +version = "4.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mdurl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5b/f5/4ec618ed16cc4f8fb3b701563655a69816155e79e24a17b651541804721d/markdown_it_py-4.0.0.tar.gz", hash = "sha256:cb0a2b4aa34f932c007117b194e945bd74e0ec24133ceb5bac59009cda1cb9f3", size = 73070, upload-time = "2025-08-11T12:57:52.854Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/94/54/e7d793b573f298e1c9013b8c4dade17d481164aa517d1d7148619c2cedbf/markdown_it_py-4.0.0-py3-none-any.whl", hash = "sha256:87327c59b172c5011896038353a81343b6754500a08cd7a4973bb48c6d578147", size = 87321, upload-time = "2025-08-11T12:57:51.923Z" }, +] + +[[package]] +name = "mdurl" +version = "0.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729, upload-time = "2022-08-14T12:40:10.846Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload-time = "2022-08-14T12:40:09.779Z" }, +] + +[[package]] +name = "pygments" +version = "2.19.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631, upload-time = "2025-06-21T13:39:12.283Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" }, +] + +[[package]] +name = "rich" +version = "14.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown-it-py" }, + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fe/75/af448d8e52bf1d8fa6a9d089ca6c07ff4453d86c65c145d0a300bb073b9b/rich-14.1.0.tar.gz", hash = "sha256:e497a48b844b0320d45007cdebfeaeed8db2a4f4bcf49f15e455cfc4af11eaa8", size = 224441, upload-time = "2025-07-25T07:32:58.125Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e3/30/3c4d035596d3cf444529e0b2953ad0466f6049528a879d27534700580395/rich-14.1.0-py3-none-any.whl", hash = "sha256:536f5f1785986d6dbdea3c75205c473f970777b4a0d6c6dd1b696aa05a3fa04f", size = 243368, upload-time = "2025-07-25T07:32:56.73Z" }, +]