A technical harness, not a product
One harness. Build every agent you need.
Adiyan (அடியான், "your humble servant") is an AI agent harness that runs entirely on your own machine - a real orchestrator, memory, and scheduler already wired together, not libraries you assemble yourself. Everything past this point - Adiyan Reader, the dev kit, community compute - is something built on the harness, not a separate product next to it.
Hear it from me
What Adiyan is, in 60 seconds.
A quick walkthrough of what Adiyan actually is and why I built it this way.
What the harness ships with
Seven agents, one install.
Built on the harness · Adiyan Reader
It reads. You listen, then it checks.
One example of what a harness-native agent looks like, not a bolted-on feature. Send Adiyan a book. It splits it into daily pages, reads that day's page aloud as a WhatsApp voice note every night, and asks you a couple of questions on it the next day - the same orchestrator, memory, and scheduler every other agent uses, doing this one's job.
A reading habit that runs itself, and checks whether you followed it.
A real clip from Adiyan Reader's own voice pipeline
This is the harness · The dev kit
Add an agent. Orchestrator finds it.
Every agent under the hood is the same handful of files - a scaffold called example_agent ships in the repo specifically so you can copy it. It rolls a die, on purpose: trivial enough that what's boilerplate and what's actually yours to write is obvious at a glance.
Copy the scaffold
cp -r mesh/example_agent mesh/your_agent, then change two lines in its constants.py: AGENT_ID and PORT.
Write the logic
One plain async def run(...) in skills/your_skill.py. No permission check, no A2A wiring in here - just the actual work.
Describe it in plain English
The description you write in skills_catalog.py is the routing logic - Orchestrator reads it to decide whether a message is yours. No regex, no keyword list.
Declare the parameters
One pydantic BaseModel in agent_executor.py (e.g. sides: int) plus one if skill_id == ... line. The harness turns "roll a 20 sided die" into {"sides": 20} against that shape.
Run it
python -m mesh.your_agent.server. It seeds its own config into Mongo and registers itself with Agent Registry on startup - Orchestrator picks it up on its next restart, no code change anywhere else.
Tune it without redeploying
Open the config dashboard and your agent already has its own tab - description, examples, model, temperature, timeout, any prompt template. Edit and save; most changes apply on the next message, no restart.
Built on the harness · Community compute
Don't buy compute for your peak. Borrow it.
Buying for your busiest moment means paying for capacity that sits idle the rest of the time. Opt one message into the community and Adiyan asks a consenting peer for help only when yours can't keep up.
Today you borrow. Tomorrow you may help someone else.
Before you install
What you need first.
curl -fsSL https://raw.githubusercontent.com/BharanitharanR/adiyan/main/get.sh | bash
macOS, Apple Silicon. Or download the zip.
The script above installs Ollama for you. ngrok and Tailscale each need one manual step first, listed alongside what they're actually for.
Ollama - runs the model itself. Installed automatically by the script. Prefer to do it yourself first? ollama.com/download.
ngrok - exposes your WhatsApp webhook to the internet. One-time setup: ngrok.com/download (or brew install ngrok), then ngrok config add-authtoken with a free account's token.
Tailscale - only if you want community compute: lets your machine reach a peer's when you opt a message into the community. Skip it if you're not using that. tailscale.com/download.
"Register me to make my life better"
The cloud centralizes AI. Adiyan distributes it. Not another AI SaaS - a different way to own one.
Under the hood
How Adiyan remembers.
Upload a document and Adiyan can answer questions about it months later. That is retrieval-augmented generation, and it is the part of the system most worth understanding - because when it goes wrong, it goes wrong confidently.
The full reference starts from what a single number in a list means, builds through embeddings, distance, vector databases and chunking, and ends with Adiyan's own architecture - including the measured failures that shaped it.
Fourteen chapters, from zero knowledge to the real system.
Foundations - what a dimension actually is, why cosine and not Euclidean, what a vector database does that an RDBMS cannot, and how HNSW keeps it fast.
The pipeline - chunking, ingestion, retrieval and generation, with the real parameters: 800-character chunks, 100 of overlap, top-4, a 0.55 similarity floor.
The capstone - Adiyan's two memory engines side by side, the full stack inventory, and five production incidents with the numbers that diagnosed them.