# OSNAP

[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
[![Python Version](https://img.shields.io/badge/python-3.7+-blue.svg)](https://www.python.org/downloads/)
[![Discord Follow](https://dcbadge.vercel.app/api/server/seKVhCtcAJ?style=flat)](https://discord.gg/seKVhCtcAJ)

The Open Swarm Network Agent Protocol (OSNAP) is a standardized protocol for building autonomous AI agents and swarms or organizations of agents. The primary goal of OSNAP is to facilitate interoperability, collaboration, and ease of development across various autonomous AI systems, similar to how HTTP serves as a standard protocol for the World Wide Web.
<p align="center">
  <img src="content/logo_midjourney.png" alt="Project logo" width="1080">
</p>

## Table of Contents
- [Why](#why)
- [How to use in your project](#how-to-use-in-your-project)
- [Examples](#examples)
- [Architecture Overview](#architecture-overview)
- [Next-Ups](#next-ups)
- [How to Contribute](#how-to-contribute)

# Why
Currently, the development and implementation of autonomous AI agents and swarms are highly fragmented, with different projects utilizing various custom-built protocols and communication methods. This lack of standardization can lead to difficulties in:

Interoperability between different AI systems and swarm implementations.
Reusability of code, components, and algorithms.
Collaboration between researchers and practitioners in the field of autonomous AI and swarm intelligence.
OSNAP aims to address these issues by providing a well-defined, standardized protocol for building and interacting with autonomous AI agents and swarms.


# How to use in your project
1. aaaa

# Examples


# Architecture overview
<p align="center">
  <img src="content/diagram.png" alt="Project diagram" width="720">
</p>


# Next-ups
- make adding new models as easy as possible, including custom deployed ones like llama
- multi-key support for higher scalability


# How to Contribute
- follow the SOLID principles and don't break the abstractions
- create bite-sized PRs
