raw

@tlelabs/raw v0.1.0 MIT Node.js 22.13+

A local coding agent for models with limited context.

Each agent selects its own ordered tools, skills and hooks, so a request carries only what that agent was given. Run it in your terminal, from a local browser dashboard, or inside an editor over the Agent Client Protocol.

npm install -g @tlelabs/raw

Installs the raw command globally. Then run raw config init.

◆ raw · agent raw · model local~/projects/api ❯ Why does the session test time out?◌ Thinking…↳ read_file  tests/session.test.ts✓ read_file  41ms$ bash  npm test -- session✓ bash  2.8s● The fixture never closes its socket, so the  runner waits for the 3 s deadline. Close it  in afterEach. ✓ Done · 6.4s · 2 tools  Context  ▰▰▰▱▱▱▱▱▱▱  ~9.6k / 32k · 30% used↪ raw --continue "Apply the fix"❯ 
Illustrative session. Output format matches Raw's normal terminal view.

One runtime, three ways in.

  1. TERMINAL

    $ raw "task"

    One-shot runs and a saved REPL

    Stream Markdown answers and tool activity, then pick the session back up with --continue or --resume. Redirected output stays plain for scripts.

  2. DASHBOARD

    $ raw dashboard

    A local browser workspace

    Chat, inspect reasoning and context usage, answer approvals, and manage agents, models, tools, skills, vars, MCP and packages. Setup works without a model connection.

  3. ACP

    $ raw --acp --stdio

    Inside editors and parent agents

    Serve the Agent Client Protocol over stdio or a local WebSocket. Parent agents can drive sessions and register temporary reverse tools.

Raw dashboard showing a chat session with tool activity and the session list
raw dashboard serves this app from your machine. Nothing is hosted.

Composed per agent, not bundled.

models describe how to reach an upstream model. agents pick one model and decide exactly which tools, skills, hooks and variables that run may use. Several agents can share a model and still see different toolsets.

read_filewrite_filebashview_imagelist_skillsload_skilllist_varsread_vartodoask_userprocess

~/.config/raw/config.json
{
  "default_agent": "raw",
  "models": {
    "local": {
      "provider": "ollama",
      "method": "openai-chat-completions",
      "model_id": "YOUR_INSTALLED_MODEL",
      "base_url": "http://127.0.0.1:11434/v1",
      "context_window_tokens": 32768
    }
  },
  "agents": {
    "raw": {
      "model": "local",
      "tools": {
        "use": ["builtin/read_file", "builtin/bash"],
        "rules": [{ "match": "builtin/bash", "effect": "ask" }]
      },
      "compact": { "trigger_tokens": 24000 }
    }
  }
}

Bring the model. Raw keeps the budget visible.

Choose the wire API per model; it never follows from the provider name. Raw estimates current context every turn, shows reported input, output and cache reads when the provider supplies them, and can compact older turns automatically once a token threshold is reached.

Context and compaction →
Supported API methods
methodtypical service
openai-chat-completionsOpenAI, DeepSeek, OpenRouter, Ollama, compatible gateways
openai-responsesOpenAI
anthropic-messagesAnthropic or compatible gateway
google-generate-contentGemini or compatible gateway

It runs as you.

Tool calls run automatically with your operating-system account's permissions. The working directory resolves relative paths; it is not a sandbox. Give an agent tools.rules toask before or deny specific tools and patterns — -y cannot bypass an explicit ask.

Permissions →
0
complete
1
runtime error
2
invalid input
3
max steps
130
cancelled

Start with one agent and one model.

npx @tlelabs/raw config init