Skip to content

Repository files navigation

Cetas

Cetas is a coding agent built on Posoco, a protocol-first LLM agent framework for MoonBit.

Wherever you access Cetas, Cetas is there. However you access Cetas, it is the same Cetas.

Repository layout

Every surface composes the same cetas-core assembly and the same Posoco Agent; none contains agent-loop logic of its own, and none defines its own identity. A new surface is a new way in — not a new Cetas. Which extensions each outlet ships, and the build knobs: see

Prerequisites

  • The MoonBit toolchain (moon).
  • Bun — only for cetas-js.
  • This repo lives at external/cetas in the Posoco workspace and builds inside that workspace (external/cetas/moon.work). MoonBit dependencies resolve through the workspace / mooncakes.io.

cetas-js — interactive terminal UI

cd cetas-js
bun run build

Provider configuration lives in .cetas/settings.json under your home directory. The settings object is passed opaquely to the selected provider extension — Cetas itself never parses endpoints or credentials.

cetas-acp — drive Cetas from an editor (Zed)

cd cetas-acp
moon build --target native --release
# binary lands at _build/native/release/build/colmugx/cetas-acp/main/main.exe

Launch it from the project root — tools run in the process working directory, matching how Zed spawns ACP agents.

Register the binary in Zed's settings (see Zed's external-agents docs for the current schema):

{
  "agent": {
    "acp_agents": {
      "cetas": {
        "command": "/absolute/path/to/cetas/_build/native/release/build/colmugx/cetas-acp/main/main.exe",
        "args": []
      }
    }
  }
}

Notes:

  • A model provider must already be configured (~/.cetas/settings.json or a previous Cetas login) — an agent without a model cannot serve prompts, so startup fails loudly on stderr and exits.
  • Model/effort selection arrives through ACP config options (session/set_config_option). Selection is process-global and is persisted back to ~/.cetas/settings.json.
  • CETAS_HOME overrides the Cetas home directory (settings, credentials, sessions); HOME is the default.
  • MCP servers declared in <cwd>/.mcp.json (overriding ~/.cetas/mcp.json) connect lazily at the first turn by default; set CETAS_MCP_MODE=eager to connect them all at startup.

cetas-run — one-shot automation / MoonX

moonx colmugx/cetas-run -- --yolo -- "fix the failing tests"

cetas-run executes exactly one Cetas turn per invocation and is intended for scripts, CI, agent swarms, and sandboxed MoonX execution. Use --jsonl for machine-readable output and --session <id> to continue a previous run.

Public extension holdings

This table describes the public flavor shipped by default. Public builds never include posoco-ext-nowledge-mem. Rows are extensions, columns are outlets — add a column when a new outlet ships. ✓ = installed, — = not held.

Ext cetas-bun cetas-acp cetas-run
Tools
posoco-ext-read / -write / -edit ✓ ✓ ✓
posoco-ext-glob / -grep ✓ ✓ ✓
posoco-ext-astgrep (structural code search via ast-grep) ✓ ✓ ✓
posoco-ext-bash / -ps1 ✓ ✓ ✓
posoco-ext-webfetch ✓ ✓ ✓
posoco-ext-askquestion ✓ ✓ ✓
posoco-ext-skills ✓ ✓ ✓
posoco-ext-handoff ✓ ✓ ✓
cetas-ext-forme ✓ ✓ ✓
posoco-ext-lazytools ✓ ✓ ✓
Model ports
posoco-ext-deepseek / -kimi / -openai / -openai-compatible / -opencode-zen / -zai / -zai-coding-plan / -openrouter ✓ ✓ ✓
posoco-kit-chat-completions / -responses / -compact-evict / -compact-summary ✓ (transitive) ✓ (transitive) ✓ (transitive)
Infrastructure
posoco-ext-llm ✓ ✓ ✓
posoco-ext-oauth ✓ ✓ ✓
posoco-ext-credentials ✓ ✓ ✓
posoco-ext-context ✓ ✓ ✓
posoco-ext-workspace ✓ ✓ ✓
posoco-ext-fs-session ✓ ✓ ✓
posoco-ext-permission ✓ ✓ ✓
posoco-ext-ratelimit ✓ ✓ ✓
posoco-devkit ✓ ✓ ✓
Preference-tied (public flavor)
posoco-ext-nowledge-mem — — —
posoco-ext-obsidian — — —
posoco-ext-zcode — — —
Outlet-specific
posoco-ext-herdr ✓ (presence + herdr_delegate) — ✓ (presence only)
posoco-ext-mcp ✓ ✓ —
posoco-ext-plan ✓ ✓ —
posoco-ext-goal — — —
posoco-ext-statusbar / -stats ✓ — —
posoco-ext-pi-adaptor ✓ — —
posoco-ext-zcode — — —
posoco-ext-acp — ✓ —
posoco-kit-lody / -paseo — ✓ —
posoco-kit-delegation — ✓ (transitive) —

posoco-ext-herdr: cetas-run reports presence only and never gets herdr_delegate — headless is a depth-1 leaf, so a delegated child cannot delegate further; pane delegation composes in cetas-bun only.

Shared state — what "the same Cetas" means today

All surfaces read and write the same Cetas home (default ~/.cetas/): settings.json (provider config + active model/effort), credential files, mcp.json, and JSONL session transcripts under sessions/. That shared home is what makes the definition literal today: log in once, and every surface is signed in; pick a model once, and every surface uses it. Continuing one conversation across surfaces (cross-host session resume) is the next piece of the definition.

About

No description, website, or topics provided.

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages