Metadata-Version: 2.1
Name: agent-os-py
Version: 0.0.1
Summary: A library and runtime to build autonomous AI agents.
Home-page: https://github.com/lukebuehler/agent-os
License: MIT
Requires-Python: >=3.10,<4.0
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Requires-Dist: aiofiles (>=23.1.0,<24.0.0)
Requires-Dist: async-lru (>=2.0.2,<3.0.0)
Requires-Dist: click (>=8.1.5,<9.0.0)
Requires-Dist: httpx (>=0.24.1,<0.25.0)
Requires-Dist: httpx-sse (>=0.3.0,<0.4.0)
Requires-Dist: jinja2 (>=3.1.2,<4.0.0)
Requires-Dist: lmdb (>=1.4.1,<2.0.0)
Requires-Dist: openai (>=0.27.8,<0.28.0)
Requires-Dist: pandas (>=1.5.3,<2.0.0)
Requires-Dist: pydantic (>=2.0.1,<3.0.0)
Requires-Dist: pytest (>=7.3.1,<8.0.0)
Requires-Dist: pytest-asyncio (>=0.21.0,<0.22.0)
Requires-Dist: python-dotenv (>=1.0.0,<2.0.0)
Requires-Dist: python-magic (>=0.4.27,<0.5.0)
Requires-Dist: sse-starlette (>=1.6.1,<2.0.0)
Requires-Dist: starlette (>=0.28.0,<0.29.0)
Requires-Dist: tomlkit (>=0.11.8,<0.12.0)
Requires-Dist: uvicorn (>=0.22.0,<0.23.0)
Requires-Dist: watchfiles (>=0.19.0,<0.20.0)
Project-URL: Repository, https://github.com/lukebuehler/agent-os
Description-Content-Type: text/markdown

*Howdy Friend! This project is still in stealthy "friends only mode", meaning I'm sharing it with a few select people to gather initial feedback. Please don't share it with others yet because it is very much only a prototype at the moment.*

*If you want to give me feedback and understand what I'm up to here, start with the documentation link below, which leads to a long [design and architecture document](docs/design/design.md). It describes the rationale and structure of the entire project. But also feel free to browse the codebase. I'm excited to hear from you!*

# Agent OS 
🌞 Build autonomous AI agents!

🛠️The Agent OS is a an experimental runtime to construct sophisticated, long-running, self-modifying AI agents. It's desigend to interact with large language models and execute functions and code that are generated by them. The OS provides a strongly consistent actor model that is built on a content-addressable storage layer that is inspired by Git. 

❓To learn how everything works, start reading the [design docs](docs/design/design.md).


## Getting Started
As long as the project is still in alpha, the best way to get started is to clone this repository.

Requires Python >= 3.10 and [Poetry](https://python-poetry.org/).

Once cloned, `cd` into the repository and run:
```
poetry install
```

The project comes with a CLI that can be used to initiate and run agents. To see the avialble commands run:
```
poetry run aos --help
```

## Your First Agent 🤖 
To run your first agent, put an `.env` file in the project root that contains the OpenAI API key, like so:
```
OPENAI_API_KEY=sk-myspecialkey
```
Then run the following CLI commands:
```
poetry run aos -d examples/first push
poetry run aos -d examples/first run
```
This 'first' agent comes with a web interface, and the Agent OS hosts a web server. To chat with your agent, browse to `http://127.0.0.1:5000/ag/first/wit/actors/frontend/query/web`.

## Project Structure

* `examples/`: examples of agent implementations.
  * `first/`: a simple GTP chatbot. See "Your First Agent" above.
* `src/`: contains all relevant modules that are part of the Agent OS.
  * `grit/`: object store, inspired by Git.
  * `wit/`: libraries to help write "wit" state transition functions
  * `runtime/`: the Agent OS runtime: actor executor, custom python module loader, and wit function resolver.
  * `sync/`: modules to push and pull data into grit from the developer's file system.
  * `web/`: the web server that provides the web interface.
  * `cli.py`: the "aos" (agent OS) CLI.
* `tests/`: extensive unit tests that cover most of the `/src` packages 
and modules.
* `docs/`: documentation, intented to be renderd as a GitBook.

## Running the Tests
If you want to hack on the code, it is helful to run the tests. The project uses `pytest` and has almost 100 unit tests.
```
poetry run pytest
```

