Jaroslav Benes 10725db63b Add README with project overview and structure
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-08 14:54:15 +02:00
2026-04-08 14:48:48 +02:00
2026-04-08 14:48:48 +02:00
2026-04-08 14:48:48 +02:00
2026-04-08 14:48:48 +02:00
2026-04-08 14:48:48 +02:00
2026-04-08 14:48:48 +02:00
2026-04-08 14:48:48 +02:00

Fellowship

Multi-bot LLM session orchestration API

Fellowship is an API middleware server that sits between any OpenAI-compatible LLM backend and your project. It manages sessions of AI bots — handling turn-taking, system prompts, conversation flow, and real-time delivery to connected clients.


What it does

  • Bot sessions — initialize a group of bots with individual personalities and system prompts
  • Autonomous conversations — bots talk to each other without human input
  • Human participation — one or more humans (talkers) can join a session alongside bots
  • Live observation — observers connect and watch conversations in real time, including mid-session
  • Orchestration — an internal LLM call routes turns intelligently across 3+ bots
  • History rectification — conversation order stays coherent even when messages arrive mid-generation

Status

Early development. Core structure is in place; implementation is in progress.


Requirements

  • Python 3.11+
  • An OpenAI-compatible LLM backend (e.g. llama.cpp server, Ollama, OpenAI API)

Getting started

# Clone the repo
git clone https://git.ecoposta.sk/Homer/Fellowship.git
cd Fellowship

# Create a virtual environment
python -m venv .venv
source .venv/bin/activate

# Install dependencies
pip install -r requirements.txt

# Configure
cp .env.example .env
# Edit .env with your LLM backend URL and model names

# Run the server
uvicorn main:app --reload

API docs available at http://localhost:8000/docs once the server is running.


API overview

POST   /v1/session/create          Create a session, get a token
GET    /v1/session/{token}         Session status
DELETE /v1/session/{token}         End a session
POST   /v1/session/{token}/pause   Pause the session loop
POST   /v1/session/{token}/resume  Resume a paused session

WS     /v1/session/{token}/connect WebSocket — chat or observe
GET    /v1/session/{token}/stream  SSE — observe only

GET    /v1/session/{token}/history Full conversation history

Full API reference: http://localhost:8000/docs


Configuration

Copy .env.example to .env and fill in your values:

Variable Description
LLM_BASE_URL OpenAI-compatible backend URL
LLM_API_KEY API key (can be a dummy value for local backends)
DEFAULT_BOT_MODEL Default model for bot turns
DEFAULT_ORCHESTRATOR_MODEL Model for orchestrator calls
MAX_BOTS_PER_SESSION Server-side cap on bots per session
SESSION_TTL_DEFAULT Idle session timeout in seconds
DEBUG Enable debug events over WebSocket/SSE

Project structure

fellowship/
  api/          HTTP routes, request/response models, event types
  core/         Session loop, turn engine, orchestrator, context, rectifier
  llm/          OpenAI-compatible LLM client
  store/        In-memory session store, SQLite memory store
  hub/          WebSocket/SSE connection hub
tests/
  unit/
  integration/
docs/

License

TBD

Description
No description provided
Readme GPL-3.0 66 KiB
Languages
Python 100%