The Summoner Core SDK is the foundation of the Summoner protocol, providing a minimal, composable runtime for building and coordinating autonomous agents.
This core SDK exposes the hooks, communication layer, and execution model needed to support decentralized identities, reputation-aware messaging, programmable automations, and orchestration.
The core codebase is thoroughly documented in our official documentation, available on our GitHub page here.
Before running the platform, ensure that both Python and Rust are installed on your system. The setup.sh script will then take care of configuring the environment and compiling necessary components.
The platform requires Python 3.9+. You can check if Python is installed using:
python3 --versionIf it is not installed, download it from the official Python website or install via your package manager.
brew install pythonsudo apt update
sudo apt install python3 python3-venv python3-pipThe Rust-based servers depend on a working installation of the Rust toolchain.
Install Rust using rustup:
brew install rustup
rustup-initcurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shAfter installation, restart your terminal and verify:
rustc --version # ✅ Should print the Rust compiler version
cargo --version # ✅ Should print the Cargo package manager versionOnce Python and Rust are installed, clone the repo and initialize the environment:
git clone https://github.com/Summoner-Network/summoner-core.git
cd summoner-core
source setup.sh # optional flags: [--uv] [--server <prefix>] (see below)Optional flags for source setup.sh:
--uvusesuvinstead ofpipand requiresuvonPATH.--server <prefix>selects which Rust servers to (re)install by prefix. The prefix is appended torust_server_. Any crate starting withrust_server_<prefix>will be installed. Default prefix isv1_0_0.
Examples:
source setup.sh --uv
source setup.sh --server v1_ # installs all rust_server_v1_* crates if present
source setup.sh --uv --server v1_1_0 # installs rust_server_v1_1_0 onlyThe setup.sh script performs the following actions:
Python environment
- Creates and activates a Python virtual environment at
venv/. - Installs core Python build tooling:
setuptools,wheel,maturin. - Uses
pipby default, oruvwhen--uvis set.
Configuration
- Generates a default
.envfile with configuration placeholders.
SDK and Rust servers
- Reinstalls Rust servers matching the selected prefix by calling
reinstall_python_sdk.sh, which also callsreinstall_rust_server.sh. - Installs the
summonerfolder as a Python package in editable mode. This enables imports likefrom summoner.server import *without modifyingPYTHONPATH.
The .env file defines key runtime parameters such as logging and database connection. You may need to adjust it to match your local setup:
# .env
DATABASE_URL=postgres://user:pass@localhost:5432/mydb
SECRET_KEY=supersecretAfter editing .env, make sure these values are correctly read by the Python settings module (summoner/settings.py). It uses os.getenv() to load defaults:
# summoner/settings.py
DATABASE_URL = os.getenv("DATABASE_URL", "sqlite:///local.db")
SECRET_KEY = os.getenv("SECRET_KEY", "devsecret")At this point, your development environment should be fully configured and ready to use. You can now launch a server or run clients to explore and test the code.
Use the ready-made scripts open_server.sh and open_client.sh in the repo root to verify your install.
POSIX (macOS/Linux)
# terminal A
source venv/bin/activate
bash open_server.sh
# terminal B
source venv/bin/activate
bash open_client.shWindows
Use Git Bash (or WSL). Activate the venv then run the scripts with Bash:
source venv/Scripts/activate
bash ./open_server.sh # terminal A
bash ./open_client.sh # terminal BIf needed: chmod +x open_server.sh open_client.sh.
Expected behavior
Server starts and listens and client connects and can send messages through a chat interactive window. If anything fails, re-run source setup.sh and try again.
This repository is open source for visibility and usage. External developers are welcome to open issues to report bugs, suggest improvements, or request new features.
Direct code contributions to this repository are limited to internal team members. If you want to propose a concrete change, see CONTRIBUTING.md for the recommended workflow.
If you would like to extend the project, we encourage you to explore our documentation on building modules and to use the SDK template repository as a starting point for creating safe, compatible extensions.
