AI agents run business processes on your business data. Every change is attributed and reversible.
One address for any MCP client. You sign in at app.aviansuite.com once, after adding it.
At most: only reads or looks up information.
Odel charges nothing per call. The publisher may charge for its own service.
| Access to | Read | Change |
|---|---|---|
| Facts | Not stated: facts | |
From the sign-in at app.aviansuite.com, as the endpoint publishes it. You approve it there.
Odel could not list its tools without signing in.
Stellar Jay is the open-source data store that powers AvianSuite. AvianSuite is an agent-native business data platform: AI agents run business processes like sales follow-up and bookkeeping on your company's data, and every change they make is versioned, attributed to the agent that made it, and reversible. Think of it as Git for your business data.
Agents connect over MCP. The server is listed in the MCP registry as
com.aviansuite/stellar-jay, and the CRM (Martin)
and bookkeeping (Magpie) apps run on
the same store. This project was formerly called JayBase.
Connect an agent with the MCP server. On AvianSuite, add the remote server:
# Claude Code
claude mcp add --transport http aviansuite https://mcp.aviansuite.com/mcp
// Cursor: .cursor/mcp.json
{"mcpServers": {"aviansuite": {"url": "https://mcp.aviansuite.com/mcp"}}}
In Claude and ChatGPT, add a custom connector with the same URL.
For a self-hosted store, run the local server instead:
{
"mcpServers": {
"aviansuite": {
"command": "stellarjay-mcp",
"env": {"STELLARJAY_URL": "https://store.example.com", "STELLARJAY_TOKEN": "writer-token"}
}
}
}
Install it with go install github.com/kyle-visner/stellarjay/cmd/stellarjay-mcp@latest.
Tools and details: docs/mcp.md.
Clients want agents that do the work, not just read about it. But when an agent writes straight into a CRM or ticketing system, one bad decision or runaway loop can overwrite or delete records, and there is often no way back.
Stellar Jay is built so that can't happen:
Every fact keeps its evidence and the agent that recorded it, so any wrong one is visible, attributed and correctable.
Developers, consultants, and small teams moving from read-only copilots to agents that are allowed to act: operations, accounting, approvals, support, and other work where the data matters. Each store serves one organization. Many agents and apps can share it.
Requires Go 1.22 or later.
1. Install and create secrets.
go install github.com/kyle-visner/stellarjay/cmd/stellarjay-server@latest
stellarjay-server init ./secrets
init creates a data encryption key and prints an admin, writer, and reader
token once. Save them in a password manager.
2. Start the server.
export STELLARJAY_DATA_DIR=./data
export STELLARJAY_DATA_KEY_FILE=./secrets/data_key
export STELLARJAY_AUTH_FILE=./secrets/auth.json
stellarjay-server serve
It listens on 127.0.0.1:8080.
3. Record a fact. In another terminal:
export STELLARJAY_URL=http://127.0.0.1:8080
export STELLARJAY_TOKEN='the-writer-token'
curl -fsS -X POST "$STELLARJAY_URL/v1/events" \
-H "Authorization: Bearer $STELLARJAY_TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: first-fact" \
--data '{
"type": "business.fact",
"entity_id": "customer-42",
"command": "fact assert",
"payload": {"predicate": "primary_contact", "value": "Ada Lovelace"},
"expected_root": ""
}'
expected_root is empty only for the first entry in a new store. After that,
read the current value from GET /v1/root and send it with each write, so a
write based on stale information is refused. The API guide
covers reading history, pagination, named checkpoints, and snapshots.
4. Connect an agent. Point the MCP server at your store:
go install github.com/kyle-visner/stellarjay/cmd/stellarjay-mcp@latest
Then use the self-hosted config from Agent setup with
STELLARJAY_URL=http://127.0.0.1:8080 and your writer token. Agents that don't
use MCP can read $STELLARJAY_URL/llm.txt, which explains how to work with the
store.
For a production store with HTTPS, you need a Linux host with Docker Compose, ports 80 and 443 open, and a DNS record pointing a domain at the host.
git clone https://github.com/kyle-visner/stellarjay.git
cd stellarjay
cp .env.example .env
# Edit .env and set STELLARJAY_DOMAIN.
go run ./cmd/stellarjay-server init ./secrets
docker compose up -d --build
curl https://stellarjay.example.com/health/ready
init will not replace existing secrets. The
operations runbook covers backups, token rotation and
upgrades, and the security model covers keys, roles and
hardening. Or skip all of this and use AvianSuite.
GOCACHE=/tmp/stellarjay-gocache go test -race ./...
GOCACHE=/tmp/stellarjay-gocache go vet ./...
docker compose config
docker build -t stellarjay:test .
AGPL-3.0-or-later. See LICENSE. Hosted Stellar Jay is available from
AvianSuite.