Docs · Maya OS · maya-os

Maya OS

A local-first AI OS. One command boots an OpenAI-compatible gateway over local GGUF models, a bus and orchestrator for agent teams, and a web dashboard.

Install

npm i -g maya-os maya serve

Requires Node.js ≥ 22.5. Apple Silicon first; local models run via llama.cpp.

What maya serve boots

Gateway :4100

OpenAI-compatible /v1 over your local GGUF models. Point any OpenAI SDK at http://127.0.0.1:4100/v1. An Anthropic-compatible /v1/messages is served too.

Dashboard :4200

Chat with agent teams, browse models, files and runs, and use the hardware-aware model recommender.

Bus :4300

The shared channel agents talk on — every teammate sees every message.

Orchestrator :4400

Teams, agents, tasks and loops, over a local HTTP API at /api.

CLI

maya --help
maya serve            boot the platform (Ctrl-C stops it)
maya status           ports, providers, home dir
maya models ls        installed models + live instances
maya models pull      download a local model
maya team create      create a standing agent team
maya team list        list live teams
maya team drain       stop a team
maya loop             run an agent loop on a task
maya --help           everything

Use the gateway from any OpenAI client

python
from openai import OpenAI

client = OpenAI(
    base_url="http://127.0.0.1:4100/v1",
    api_key="maya",   # any value; it's local
)

r = client.chat.completions.create(
    model="local/qwen2.5-coder-7b",
    messages=[{"role": "user", "content": "hi"}],
)

Agent teams

A team is one or more standing agents sharing a channel. Each runs in a real PTY — Claude Code, Codex, or maya code — on a local model, an API key, or your own subscription. Agents see every message on the channel, coordinate, and use their own tools. Spawn them from the dashboard (Teams → new agent) or the orchestrator API.

Hardware-aware fit

Maya sizes models to your free RAM before loading, so a model that can't fit is refused rather than swap-thrashing or OOM-ing.

Session resume

Stop an agent and revive it — it reopens the same conversation, so a team can be paused and picked back up.

Docs · maya code · @maya-os/code · bin: mayac

maya code

A full-screen terminal coding agent. Provider-agnostic (Anthropic + OpenAI), runs on an API key or your own subscription, with skills, MCP, sub-agents, workflows and memory.

Install

npm i -g @maya-os/code mayac

Flags

mayac --help
--provider <anthropic|openai>  provider
--model <id>                   model override
--auth <api|subscription>     auto-detected
--cwd <dir>                   working directory
-p, --print "<prompt>"        headless one-shot
--resume [id]                 reload a past session
-c, --continue               continue the last session
--session-id <id>             use this session id
--workflow <script.js>       run a sub-agent workflow
--yolo                       auto-approve writes/bash

Slash commands

Session

/model · /provider · /auth · /resume · /compact · /clear · /help · /quit

Skills

/skills · /skills search <q> (pick a result and press Enter to install) · /skills add <owner/repo> — skills.sh-compatible, loaded from .skills/.

Agents & workflows

/agent <prompt> runs a sub-agent (foreground or background) · /workflow <script.js> orchestrates several.

Tools & MCP

/mcp · /mcp add <config> to connect a Model Context Protocol server · /tasks and /bg <cmd> for background jobs.

Memory

/memory · /memory add <note> · /memory edit — global memory plus per-project MAYAC.md.

Copy

/copy copies the last reply. Drag with the mouse and press ⌘C to select normally; /mouse toggles mouse capture.

Keybindings

mayac — keys
PgUp / PgDn    scroll the transcript
Ctrl+P / ^N    focus a tool call (→ expand)
Ctrl+Space     copy mode (y copies)
Tab            accept autocomplete
Esc            interrupt the current turn
↑ / ↓          command history
Ctrl+C         quit

Steer it mid-turn

Type while the agent is working. Your message is delivered at the next tool boundary — so you can redirect an agent that's several tool-calls down the wrong path without aborting it. Esc still aborts if you actually want to stop the turn.

Auth

Subscription

Uses your own logged-in Claude (~/.claude) or ChatGPT/Codex (~/.codex) credentials. No API key, no extra bill.

API key

ANTHROPIC_API_KEY or OPENAI_API_KEY in your environment; pass --auth api to force it.