Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
175 changes: 76 additions & 99 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,13 @@
<a href="https://pypi.org/project/isek/"><img src="https://img.shields.io/pypi/v/isek" alt="PyPI version" /></a>
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="License: MIT" /></a>
<a href="mailto:team@isek.xyz"><img src="https://img.shields.io/badge/contact-team@isek.xyz-blue" alt="Email" /></a>
<a href="https://www.python.org/downloads/"><img src="https://img.shields.io/badge/python-3.10%2B-blue.svg" alt="Python Version" /></a>
<a href="https://github.com/openagents-org/openagents/actions/workflows/pytest.yml"><img src="https://github.com/openagents-org/openagents/actions/workflows/pytest.yml/badge.svg?branch=develop" alt="Tests" /></a>
<a href="#-try-it-in-60-seconds"><img src="https://img.shields.io/badge/📖_tutorial-get%20started-green.svg" alt="Tutorial" /></a>
<a href="https://openagents.org"><img src="https://img.shields.io/badge/📚_docs-openagents.org-blue.svg" alt="Documentation" /></a>
<a href="#-try-it-in-60-seconds"><img src="https://img.shields.io/badge/🚀_examples-ready--to--run-orange.svg" alt="Examples" /></a>
<a href="https://discord.gg/PRzG3MSP"><img src="https://img.shields.io/badge/Discord-Join%20Community-5865f2?logo=discord&logoColor=white" alt="Discord" /></a>
<a href="https://x.com/ISEK_Official"><img src="https://img.shields.io/badge/Twitter-Follow%20Updates-1da1f2?logo=x&logoColor=white" alt="Twitter" /></a>
</p>

<h4 align="center">
Expand All @@ -17,68 +24,93 @@
</h4>

---
**ISEK** is a decentralized agent network framework for building intelligent, collaborative agent-to-agent (A2A) systems. The Isek network integrates the Google **A2A** protocol and **ERC-8004** contracts to enable identity registration, reputation building, and cooperative task-solving. Together, these elements form a self-organizing, decentralized society of agents.
> 🧪 **ISEK is under active development.** Contributions, feedback, and experiments are highly welcome.
**ISEK** is a decentralized framework designed for building **AI Agent Network**. Instead of treating agents as isolated executors, it provides the missing layer of collaboration and coordination. Developers run their agents locally, and through peer-to-peer connections, these agents join the ISEK network. Once connected, they can discover other agents, form communities, and deliver services directly to users.

---

## What problem ISEK solve?

Our platform allows agent developers to run their agents locally. Through peer-to-peer connections, these agents join the ISEK network and can deliver services directly to users.
While most frameworks treat agents as isolated agent executors, **ISEK** focuses on the missing layer: **decentralized agent collaboration and coordination**. We believe the future of intelligent systems lies in **self-organizing agent networks** capable of context sharing, team formation, and collective reasoning — all without central control.
> ISEK is not just about running agents — it's about empowering them to **find each other, reason together, and act as a decentralized system.**

## Why ERC-8004 matters?

ERC-8004 provides a decentralized framework for identity, reputation, and validation registries, establishing the foundation for trustless verification and reputation management.
---

## 🌟 Features

- **🧠 Decentralized Cooperation
Using the ERC-8004 trustless Agent Contract as our registry, we provide decentralized identity, reputation, and validation services. Agents can discover peers and collaborate directly — with no single point of failure.
At the core of the network, Google’s A2A protocol and ERC-8004 smart contracts enable identity registration, reputation building, and cooperative task-solving. This transforms agents from standalone tools into participants in a shared ecosystem.
We believe in self-organizing agent networks — systems that can share context, form teams, and reason collectively without central control.

- **🌐 Distributed Deployment
Agent owners can run their agents 100% locally, mint an Agent NFT, and use an agent wallet to claim full ownership and control.
Visit our website at [isek.xyz](https://www.isek.xyz/) for more details.

- **🔌 MCP-Based Agent Discovery
Our map server connects to the agent discovery service, making it easy for users to find agents. Configure the MCP service once, and you can access agents directly through your favorite AI chatbot.
## 🌟 Star Us on GitHub and Get Exclusive Reward!
Star ISEK to get notified about upcoming features, workshops and join our growing community for exploring the future of AI collaboration.

- **💻 Developer-Friendly CLI
A streamlined CLI makes agent setup, deployment, and management fast and hassle-free.
<img src="assets/star_gif.gif" alt="hippo" width="250"/>

---

## 🚀 Quick Start

```bash
python3 -m venv isek_env && source isek_env/bin/activate
```
### Prerequisites
- **Python 3.10+**
- **Node.js 18+** (for P2P functionality)

### Installation
```bash
python3 -m venv isek_env && source isek_env/bin/activate
pip install isek
isek setup
```

### Prerequisites
- **Python 3.10+**
- **Node.js 18+** (for P2P functionality)
### Hosting your Agent:
```python
node = Node(host="127.0.0.1", port=9999, node_id="openai-agent")
app = Node.create_server(your_agent_executor, agent_card)
node.build_server(app, name="OpenAI Agent", daemon=False)
```

> 💡 **Tip:** The `isek setup` command automatically handles both Python and JavaScript dependencies.
### Query your Agent:
```python
node = Node(host="127.0.0.1", port=8888, node_id="a2a-client")
message_content = await node.send_message("http://localhost:9999", query)
```

### P2P Relay setup
```bash
isek run-realy
```
Expected output:
Relay peer started. peerId=<your-network-peerId>
Copy you peerID, this is your Agent network ID

### Set Up Environment

Create a `.env` file:
### P2P Hosting your Agent:
```python
p2p = A2AProtocolV2(
host="127.0.0.1",
port=9999,
p2p_enabled=True,
p2p_server_port=9001,
relay_ip=<your-ip>,
relay_peer_id=<your-network-peerId>
)
p2p.start_p2p_server(wait_until_ready=True)
```

```env
OPENAI_MODEL_NAME=gpt-4o-mini
OPENAI_BASE_URL=https://api.openai.com/v1
OPENAI_API_KEY=your_api_key
Expected output:
| [p2p] server | peer_id=<your-agent-peerId>
Copy you peerID, this is your Agent server ID

### P2P Query your Agent:

```python
p2p = A2AProtocolV2(
host="127.0.0.1",
port=8888,
p2p_enabled=True,
p2p_server_port=9002,
relay_ip=<your-ip>,
relay_peer_id=<your-network-peerId>
)
p2p.start_p2p_server(wait_until_ready=True)

resp = p2p.send_message(
sender_node_id="a2a-client",
receiver_peer_id=<your-agent-peerId>,
message=query,
)
```

### Wallet & Identity
### Wallet & Identity (optional)

ISEK now uses a simple local wallet manager and an ERC-8004 identity flow.

Expand Down Expand Up @@ -123,66 +155,23 @@ Notes:
- If the agent is already registered, it returns the existing `agent_id` without sending a transaction.


### Launch Agent

```python
from isek.agent.isek_agent import IsekAgent
from isek.models.openai import OpenAIModel
import dotenv
dotenv.load_dotenv()

agent = IsekAgent(
name="My Agent",
model=OpenAIModel(model_id="gpt-4o-mini"),
description="A helpful assistant",
instructions=["Be polite", "Provide accurate information"],
success_criteria="User gets a helpful response"
)

response = agent.run("hello")
```

### Try Examples

In the examples folder, follow the examples from level 1 to level 10, and you should have a good understanding of ISEK
[A2A Agent Server](https://www.isek.xyz/)
[A2A Agent Client](https://www.isek.xyz/)
[P2P Agent Server](https://www.isek.xyz/)
[A2A Agent Client](https://www.isek.xyz/)

---

## 🧪 CLI Commands

```bash
isek setup # Install Python and JavaScript dependencies
isek run_relay # Start the relay
isek clean # Clean temporary files
isek --help # View available commands
```

---

## 🧱 Project Structure

```
isek/
├── examples # Sample scripts demonstrating Isek usage
├── isek # Core functionality and modules
│ ├── agent # Agent logic and behavior
│ ├── node # Node orchestration
│ ├── protocol # Inter-Agent communication Protocol Layer
│ ├── memory # Agent state and context
│ ├── models # LLM backends and interfaces
│ ├── team # Multi-Agent Organization Interface
│ ├── tools # The toolkit library for Agents
│ ├── utils # Utility functions
│ ├── cli.py # CLI entry point
│ └── isek_center.py # Local registry and coordinator
├── docs/ # Documentation
└── README.md # Project overview and documentation
```
---

## 🌟 Star Us 😉

<img src="assets/star_gif.gif" alt="hippo" width="250"/>

---

## 🤝 Contributing
Expand All @@ -195,18 +184,6 @@ We welcome collaborators, researchers, and early adopters!

---

## 📜 License

Licensed under the [MIT License](LICENSE).

---
## ⚠️ Legal Notice

ISEK is an open-source, permissionless framework for building decentralized agent coordination systems.
The contributors do not operate, control, or monitor any deployed agents or their behavior.
By using this project, you accept full responsibility for your actions. See [LEGAL.md](./LEGAL.md) for more details.

---
<p align="center">
Made with ❤️ by the <strong>Isek Team</strong><br />
<em>Autonomy is not isolation. It's cooperation, at scale.</em>
Expand Down
2 changes: 1 addition & 1 deletion examples/Agent_servers/Pydantic/openai_agent_a2a_p2p.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ def main():
p2p_enabled=True,
p2p_server_port=9001,
relay_ip="155.138.145.190",
relay_peer_id="12D3KooWShd5s1ziziZNkiqN56XVpWH3chZHeq7EeSzHKMzR12vf"
relay_peer_id="12D3KooWAom1Up6ZmpWgCSZGU5miehN5j2fczRNaiPUU4ZqmSCJq"
)
# Run blocking wait so we can print the peer address before starting the agent server
p2p.start_p2p_server(wait_until_ready=True)
Expand Down
19 changes: 10 additions & 9 deletions isek/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,14 +60,6 @@ def clean():
click.secho("✓ Cleanup completed", fg="green")


@cli.command()
def registry():
"""Start local development registry"""
from isek.isek_center import main

main()


@cli.command()
def setup():
"""Install ISEK Python and JavaScript dependencies"""
Expand Down Expand Up @@ -144,7 +136,16 @@ def is_development_environment():
click.secho(" P2P functionality may not work correctly", fg="yellow")

click.secho("🎉 ISEK setup completed successfully!", fg="green")
click.secho(" You can now run examples with 'isek example run <name>'", fg="blue")
click.secho(" You can now run relay with 'isek run_relay'", fg="blue")


@cli.command()
def run_relay():
"""Run relay"""
subprocess.run(
["node", "isek/protocol/p2p/relay.js"], check=True, capture_output=True
)
click.secho("✓ Relay started", fg="green")


@cli.group()
Expand Down
Loading