Self-hosted agent orchestration

Give your models real tools. Run them on hardware you control.

Turnstone hands LLMs a shell, files, search, and the web — then orchestrates multi-turn agents across your own cluster, with direct HTTP routing and interactive interfaces. No telemetry. No phone-home. Your code, your models, your data stay put.

$ curl -fsSL https://arenaria.ai/install.sh | bash
GitHub Docs →
Apache-2.0 Python 3.11+ vLLM · llama.cpp · Anthropic · Gemini
What it does

Agents that investigate, act, and report — without leaving your network.

Local-first

Private by construction

Runs entirely on hardware you control. No telemetry, no phone-home — prompts and data never transit a third party you didn't choose.

Models

Bring your own

vLLM, llama.cpp, NIM, the Anthropic Messages API, and Google Gemini — OpenAI-compatible or native, mixed freely per role.

Judge

Intent validation

An LLM judge — your model — grades every tool call with a risk assessment and evidence, before it runs.

Cluster

Live dashboard + routing

Real-time view of every node and workstream, with a rendezvous-hashing proxy that re-routes only the keys it must on join or drop.

MCP

External tools, native

Model Context Protocol servers with native deferred loading (Anthropic/OpenAI) and a BM25 fallback for discovery.

Governance

Team controls, optional

RBAC, SSO, tool policies, and audit logs when you need them — all stored in your own database, never ours.

Arenaria · arēna “sand”

Of the sand.

Arenaria comes from the Latin arēna — sand. It's the genus of the ruddy turnstone, a shorebird at home where the shore opens into bare, wind-combed flat: the sand-dweller.

There's a quieter reason it fits. Everything here runs on what we draw up from sand — refined, etched, set to thinking — and Turnstone keeps that intelligence on ground you hold: your models, your data, your hardware.

A ruddy turnstone (Arenaria interpres) on a sandy shore, overlaid with cyan circuit-board traces
Arenaria interpres
Get started

Up and running in a minute.

pip
# stable — production-grade, bugfixes only
$ pip install turnstone

# or the experimental track
$ pip install turnstone --pre
docker — full local cluster
# autodetects your distro, installs deps,
# generates secrets, starts the stack
$ curl -fsSL https://arenaria.ai/install.sh | bash
python sdk
from turnstone.sdk import TurnstoneServer

with TurnstoneServer(url, token=tok) as c:
    ws = c.create_workstream(name="demo")
    r = c.send_and_wait("Analyze the logs", ws.ws_id)
    print(r.content)
quickstart — point & talk
# any OpenAI-compatible endpoint
$ turnstone --base-url http://localhost:8000/v1
$ turnstone-server --port 8080
$ turnstone-console --port 8090
 dashboard live · https://localhost:8443