Skip to content
caudra.
Why CaudraIncludedGalleryDocsGitHub ↗
Install ↓

Gallery

Watch Caudra at work.

Each clip is a real Caudra session in a small demo project, recorded in the terminal and played back with its original timing. Hover over a clip or move focus to it to see a short excerpt, or press Play to watch the whole session on this page.

A clip shows one session with the model it names. Its length does not measure speed.

  • Run and steer agents7
  • Nudges6
  • Hosted and local models2
  • Spend fewer tokens2
  • Sessions and history4
  • Review the work2
  • Tools3
  • MCP servers1
  • Permissions1
  • In the terminal4
  • Scripts1

Run and steer agents

One prompt starts the work, and the input stays open while agents run.

  • Caudra after the fix. The make check card shows 8 pass and 0 fail, and the make and progress stages made it 58% smaller. Below it, all three todos are done. The reply names the root cause at src/pagination.ts:29 and the one-page test that the background task added, and reports make check passed: 8 tests, 0 failures.

    From bug report to passing tests

    A real session in the demo project, whose AGENTS.md asks for background tasks and one final make check. One prompt asks for the fix and a test. A subagent writes the test in the background while the main agent fixes the code, and make check runs after your approval. The workbench then shows the diff.

    Model
    openai/gpt-6.1-sol
    Length
    1:17

    DocsBackground tasksShell output filteringSource control

  • The chat of a running subagent. It has patched src/pagination.test.ts with a test named "an empty listing has no items or next cursor". Below the patch, your guidance, Call the new test "an empty listing has no next cursor", waits in the queue of the task until the subagent reads it.

    Guide a running subagent

    A real session in the demo project, whose AGENTS.md asks for background tasks and one final make check. You guide the running subagent from its own chat, add guidance to the main run, and queue make check for after the run. The subagent renames its test as guided, and the queued make check passes 8 tests.

    Model
    openai/gpt-6.1-sol
    Length
    1:28

    DocsQueue and steeringGuide a running task

  • The /btw panel over the question form. It repeats the question and both choices, then the side question, Which option keeps clients that check for null working?, and its answer: Return null keeps clients that explicitly check nextCursor === null working. Omitting the field makes its value undefined in JavaScript, so that check would fail.

    Clarify a question with /btw

    A real session in the demo project. The agent asks whether the last page should return nextCursor: null or leave the field out. F2 opens /btw, which answers a side question about the choices. Esc returns to the unchanged form, and you pick Return null.

    Model
    openai/gpt-6.1-sol
    Length
    0:51

    DocsSide questions with /btw

  • The Patched src/pagination.ts card, where the cursor is now set only when more rows remain, and the agent saying that it waits for the test name before it adds the regression test. Below, the docked form Deferred question 1 of 1 asks what to call the new test and offers two names and Type your own answer.

    Answer a question later

    A real session in the demo project. The prompt asks for the final-page cursor fix and a regression test, and asks the agent to ask for the test name in the background. The form docks as Deferred question 1 of 1, and Esc parks it in the status bar as [? 1]. The agent keeps working and patches src/pagination.ts. When it needs the name, it ends its turn and the form docks again. The typed answer becomes the name of a new test, the agent adds a second test of its own, and make check passes 9 tests.

    Model
    openai/gpt-6.1-sol
    Length
    1:38

    DocsDeferred questionsThe question tool

  • The chat of the task List failing Bun tests. Its brief reads Run bun test in /tmp/caudra-demo/orders and list the failing tests with concise failure details. Do not edit any files or run any other commands. Below it, the subagent is writing its first command, bun test.

    Work starts while the model writes

    A real session in the demo project. One reply asks for a grep, a read, and a background task. The grep and the read finish while the model is still writing the task brief, and the task chat opens before the brief is complete. The subagent runs bun test and reports the three failing tests.

    Model
    openai/gpt-6.1-sol
    Length
    0:44

    DocsEager tool executionTask chats

  • The saved three-step plan with the path of its plan file. Below it, the Plan complete menu offers Refine plan, Clear context and implement, and Implement plan, and the status bar reads PLAN.

    Plan first, then build

    A real session in the demo project. In Plan mode, the agent can write only its plan file. It reads the code, a read-only task reviews the test coverage, and the agent saves a three-step plan: the fix, one regression test, and one make check run. Plan complete offers to refine or implement the plan. Implement plan switches the same session to Build mode, and the take stops the run after the first patch.

    Model
    openai/gpt-6-astra
    Length
    1:09

    DocsPlan modeThe plan toolModes and toggles

  • The goal panel over a working session. It reads ACTIVE, the condition make check exits 0 and no existing test was edited, the default evaluator, 16 automatic continuations, 0 evaluations after 10 s, and the goal spend so far.

    Work toward a goal

    A real session in the demo project. /goal sets the condition make check exits 0 and no existing test was edited. The panel shows the condition, the evaluator, and the limit of 16 automatic continuations. The agent fixes the bug, and after the work turn a separate evaluator finds the goal met and clears it.

    Model
    openai/gpt-6.1-sol
    Length
    0:53

    DocsCompletion goals

Nudges

When a turn goes off course, Caudra adds one short message or refuses the tool call before it runs. Click a dim row to read the exact text the model received.

  • The reply I will run make check now, followed by the dim row The turn ended on a statement of intent. The work it announced was not performed. Below it, the expanded text the model received, Carry out what you said you would do now, using tool calls, and the make check card with 4 pass and 3 fail.

    Nudge a turn that stopped early

    A real session in the demo project. The prompt asks for only the sentence I will run make check now, so the reply announces work and calls no tool. A dim row reports the nudge, a click shows the exact text the model received, and make check then runs under a project rule stored before the take.

    Model
    openai/gpt-6.1-sol
    Length
    0:36

    DocsAutomatic steeringWhat Caudra writes on your behalf

  • The prose reply ends with Which approach should I apply? No files have been changed. Below it, the opened decision row question_tool_nudge, asked the agent to use the question tool (1.00), lists question_tool_needed 1.00 and threshold 0.85, followed by the folded row Ask through the question tool. The question form below asks Which approach should I apply to fix the last-page cursor? and offers Compare counts (Recommended) and One-item lookahead.

    Ask through the question tool

    Experimental

    A real session in the demo project, with the experimental question-tool nudge of the jev-latest decision engine on and every other engine feature off. The prompt asks for two ways to fix the last-page cursor and for a choice before any change, and the reply asks in prose. The engine scores the reply at 1.00 against a threshold of 0.85, Caudra adds one reminder, and the agent asks again as a form. A click opens the decision row with its scores, and another click opens the exact reminder text. Compare counts is chosen, the agent patches src/pagination.ts, and make check passes 7 tests. The main agent also starts a read-only review task, as the AGENTS.md of the demo project asks.

    The question-tool nudge is experimental and off by default. It needs the experimental decision engine. The score is not a calibrated probability.

    Model
    openai/gpt-6.1-sol
    Length
    1:53

    DocsQuestion-tool nudgeDecision rowsThe question tool

  • The refused call Run make check with the message You have called this tool with identical input 3 times in a row. You are stuck in a loop. Break out and try a different approach. Below it, the reply says that the tool blocked the third call, and a table lists runs 1 and 2 with exit code 2, 4 passed and 3 failed, and run 3 as Blocked by tool.

    Refuse a third identical call

    A real session in the demo project. The prompt asks for make check three times in a row with exactly the same shell call. Two runs complete with 4 pass and 3 fail. Caudra refuses the third identical call before it runs, and the message tells the model why. The reply reports the two runs and the blocked third.

    Model
    openai/gpt-6.1-sol
    Length
    0:58

    DocsAutomatic steeringRule fields

  • The refused call Run cd src && ls with its whole message, which asks for the workdir argument of the shell tool instead of a leading cd and names agent.shell_workdir_redirect = false to turn the check off. Below it, ls runs with workdir src/ and lists orders.test.ts, orders.ts, pagination.test.ts, and pagination.ts, followed by the folded row Relative paths.

    Shell commands that a tool does better

    A real session in the demo project. The prompt asks for cd src && ls and then cat src/pagination.ts in the shell, as written. Caudra refuses the leading cd and names the workdir argument, so the agent runs ls with workdir src. It refuses cat and names file_read, so the agent reads the file with that tool. A Relative paths hint appears as well. The reply says that limit has no default.

    Model
    openai/gpt-6.1-sol
    Length
    0:56

    DocsThe shell toolagent settings

  • Two reads by absolute path, /tmp/caudra-demo/orders/src/pagination.ts and /tmp/caudra-demo/orders/src/pagination.test.ts. Below them, the opened Relative paths reminder lists the shorter forms src/pagination.ts and src/pagination.test.ts, and the reply names the two tests that cover the last page.

    A hint toward relative paths

    A real session in the demo project. The prompt names two files by the absolute path of the demo project, and the agent reads them that way. A dim Relative paths row appears. A click shows the shorter forms that the model received, src/pagination.ts and src/pagination.test.ts, and a second click folds it. The follow-up prompt asks for the orders module, and the agent reads src/orders.ts by its relative path.

    Model
    openai/gpt-6.1-sol
    Length
    1:14

    DocsAutomatic steeringWhat Caudra writes on your behalf

  • The opened Open todo items reminder. It says that 2 of 3 todo items are still pending or in progress, asks the agent to verify each open item, and quotes the list: Fix the code completed, Add a regression test pending, Run make check pending. Below it, the agent replies that the list is accurate and that the test and make check remain pending.

    A reminder about open todos

    A real session in the demo project. The prompt asks for a todo list of three items and for only the first one. The agent fixes src/pagination.ts and starts a read-only review task, as the AGENTS.md of the demo project asks. When it is about to hand back control with two items open, Caudra sends the list back once. A click opens the reminder with the quoted list, and the agent answers that both items stay open because the prompt asked it to stop.

    Model
    openai/gpt-6.1-sol
    Length
    1:16

    DocsOpen todo itemsThe todo_write tool

Hosted and local models

Every clip names the model it used. The same tools and permission rules apply when a model runs on your own hardware.

  • Caudra after the fix, with ninfer-4090/qwen3.8-27b in the status bar. The make check card shows 8 pass and 0 fail, and the make and progress stages made it 58% smaller. The reply names the root cause in src/pagination.ts:29, the regression test a partial final page has no next cursor, and make check: 8 pass, 0 fail.

    A local model fixes the bug

    A real session in the demo project with Qwen3.8-27B, which ninfer-4090 serves from a machine in the local network through a standard OpenAI-compatible endpoint that follows the official Responses API specification. One prompt asks for the fix, a regression test, and make check. The server computes all 10,489 prompt tokens of the first request with nothing from its cache, and a bar above the input shows the prefill rate, such as 3.4k tok/s. The model patches src/pagination.ts, adds the test, and make check passes 8 tests. /usage then lists the tokens of the session for this model.

    ninfer-4090 is a custom inference engine by Caudra's creator for Qwen3.8-27B on one RTX 4090. It serves a standard OpenAI-compatible endpoint that follows the official OpenAI Responses API specification. Caudra reaches it as it would any such endpoint, through a providers.toml entry with protocol = "openai-responses" and the address of the machine in the local network.

    Model
    ninfer-4090/qwen3.8-27b
    Length
    0:59

    Docsproviders.tomlProvider fieldsModel identifiers

  • The delivery Task terra-reviews-final-cursor: success. Model: openai/gpt-5.6-terra, thinking: none, with its two-sentence review. Below it, the main agent reads src/pagination.ts, sums up the review of terra, and ends with Both reviews are complete. The status bar names openai/gpt-6.1-sol and PLAN.

    Tasks on the models you name

    A real session in the demo project, in Plan mode, with gpt-6.1-sol as the main agent. One prompt asks luna and terra to review the final-page cursor logic in src/pagination.ts, one task each, two sentences each. The main agent starts one read-only task on openai/gpt-6-luna and one on openai/gpt-5.6-terra. Each delivery names the model and the thinking level it ran on. /tasks then opens the chat of the terra task, and its status bar names openai/gpt-5.6-terra.

    Model
    openai/gpt-6.1-sol
    Length
    0:58

    DocsModels and reasoningModel jobs

Spend fewer tokens

Shell output shrinks before the model reads it, with command-aware rules that mostly come from RTK. Two commands show what fills the context window and what each model used.

  • Caudra after make check failed. The shell card footer reads filtered, make, progress, 36% smaller, click for raw. Below it, the reply reports 4 passed and 3 failed and starts the list of failing tests with src/orders.test.ts:16 and src/pagination.test.ts:21.

    Filter shell output

    A real session in the demo project. make check fails three tests, and the make and progress stages make its output 36% smaller for this command. The reply names each failure, and one click shows the raw output.

    Model
    openai/gpt-6.1-sol
    Length
    0:33

    DocsShell output filteringSmaller results

  • The Token usage panel. The session total shows 50k base input, 1.2k output, and 103.8k cache read tokens, with the subscription cost not billed and 5% of the weekly OpenAI quota used. The Per model table lists gpt-6.1-sol and gpt-6-luna, and the Per purpose table lists chat and title, each with its tokens and cache hit rate.

    Context and token usage

    A real session in the demo project after a fix. /context shows the window of gpt-6.1-sol by category, from the system prompt to the messages, with the reserve and the auto-compact threshold. /usage shows the tokens of the session per model, here gpt-6.1-sol and gpt-6-luna, and per purpose, where chat is the conversation and title is the call that named the session. Each row has a cache hit rate, and the panel shows the weekly quota of the ChatGPT subscription.

    Model
    openai/gpt-6.1-sol
    Length
    0:25

    DocsContext windowInspect the active windowCache hit rate

Sessions and history

Every session keeps its history. You can reopen a session later, fork it into a worktree, or revert the files that its tool calls changed.

  • Caudra with the prompt that led to the fix at the top of the transcript: Fix the final-page cursor bug in src/pagination.ts and add a regression test for it to src/pagination.test.ts. The status row reads File revert: 0 created, 2 replaced, 0 deleted. Repeat to confirm.

    Revert files from a message

    A real session in which the agent fixed the bug and added a test. The first Revert files only counts the two files it would replace. The second applies it, and git diff prints nothing. Unrevert puts both files back.

    Model
    openai/gpt-6.1-sol
    Length
    0:55

    DocsFile revertMessage actions

  • The Sessions picker. The fork, Explaining final-page cursor bug in pagination.ts (fork #1), is current. The original session is listed under main in /tmp/caudra-fork/orders. The status bar shows the worktree path /tmp/caudra-demo-worktrees/orders/try-null-cursor and the notice This session moved into worktree try-null-cursor.

    Fork a session into a worktree

    A real session in the demo project. The agent explains the final-page bug without changing files. The message menu of the reply offers Fork here, which copies the conversation into a new session without a model request. /worktree new try-null-cursor moves the fork into its own checkout and branch, and /sessions shows the fork in the worktree and the original in the main checkout.

    Model
    openai/gpt-6-luna
    Length
    0:53

    DocsMessage actionsFork boundariesCreating a worktree

  • Herdr with two tabs, Why Last Page Returns a nextCursor and the active Why Last Page Returns a nextCursor (fork #1). The fork shows the earlier answer, the prompt Run bun test, and the Allow shell command? prompt for bun test. The agents list in the sidebar holds two orders sessions, and the row of the fork carries a filled dot.

    Caudra inside Herdr

    A real session in the demo project, run in a Herdr of its own. While the agent answers why the last page still returns a nextCursor, the sidebar shows the session working, and the tab takes the session title, Why Last Page Returns a nextCursor. The main agent also starts a read-only background task. Fork here, in the message menu, opens the fork in a new tab with a Caudra of its own. In the fork, Tab switches to Build mode, and Run bun test waits for approval. The sidebar marks that session until 1 approves the command. The take ends back on the first tab, where the original session is as it was.

    Herdr runs terminal workspaces for agents and inspired parts of Caudra. In Orca, Caudra reports its state and shows the session title on the terminal tab instead.

    Model
    openai/gpt-6.1-sol
    Length
    1:08

    DocsHerdr integrationTab namesForks in Herdr and Orca

  • The reopened session. The earlier summary of the fix sits above the follow-up Which line of src/pagination.ts did you change, and why? One sentence. The answer reads I changed src/pagination.ts:29 to return a cursor only when rows remain beyond the current page, preventing final pages from advertising another page.

    Continue the last session

    A real shell session in the demo project. caudra --continue reopens the last session, in which the agent fixed the bug, with its history and its mode. A follow-up asks which line changed, and the answer names src/pagination.ts:29. Ctrl+C quits, and the exit card names the caudra -s command that opens the session again.

    Model
    openai/gpt-6.1-sol
    Length
    0:33

    Docs--continueSessions

Review the work

Read the diff beside the session, or put notes on exact passages of a reply. Passage review was inspired by Plannotator.

  • The workbench. The sidebar shows source control with two changed files under src. The editor shows the diff of src/pagination.ts, where line 29 now returns a cursor only when more rows remain.

    The workbench beside a session

    A real session in the demo project after the agent fixed the bug. While make check runs, Ctrl+X w opens the workbench, and source control shows the diff of src/pagination.ts. Ctrl+P opens src/orders.test.ts, lines 11 to 15 are selected, and Ctrl+X Enter sends them to the composer as @src/orders.test.ts:L11-L15. The answer explains that the loop stopped only when nextCursor was null.

    Model
    openai/gpt-6.1-sol
    Length
    0:48

    DocsWorkbenchSend a reference

  • The Review reply modal with 2 notes. Dots mark the rows of the Root cause bullet and the Fix bullet, which each carry a note.

    Review passages of a reply

    A real session in the demo project. The reply explains the bug in four bullet points. Ctrl+X r opens it, and two notes go on two exact passages. Ctrl+S puts both notes in the composer as one collapsed paste, and nothing reaches the model until Enter. The answer covers both notes and names the three failing tests.

    Model
    openai/gpt-6.1-sol
    Length
    1:17

    DocsPassage review

Tools

When a tool refuses a request or stops at a limit, its result says so. The file, shell, web, code, and Python tools come from Workcell.

  • The fetch card for http://127.0.0.1:8080/ reads URL is blocked by network safety rules: non-public IP address is not allowed by policy: 127.0.0.1 (Loopback). Below it, RFC 9110 arrives as about 12.6k tokens, and the reply says that the text stops mid-sentence in Section 4.2.2 and quotes the line [truncated: showing 49 of 492 KiB].

    Fetch with stated limits

    A real session in the demo project with gpt-6.1-sol. The network safety rules refuse a fetch of 127.0.0.1. RFC 9110 arrives cut, and the reply quotes the line [truncated: showing 49 of 492 KiB]. The RFC 8890 PDF is requested as an attachment. This model does not read PDF files, so it receives the text with a line that says why, and the reply gives the title and a page count of 10.

    Attached PDFs reach Claude through Anthropic or Amazon Bedrock, and custom models on a compatible API that declare PDF support. Other models receive the extracted text with a line that says why.

    Model
    openai/gpt-6.1-sol
    Length
    1:09

    DocswebfetchFetched PDFs

  • The answer under two Traced paginate rows, one for callers and one for callees, and Indexed src/pagination.ts. It shows that nextCursor is set at src/pagination.ts:29, the outline of src/pagination.ts with line ranges, listOrders in src/orders.ts:12-14 as the caller, and encodeCursor and decodeCursor as callees. It ends with No files changed.

    Answer from outlines and references

    A real session in the demo project. The prompt asks where nextCursor is set, what calls paginate, and what paginate calls, without reading whole files. In one batch, the model maps src, greps for nextCursor, and traces paginate in both directions. It then indexes src/pagination.ts. The answer cites files and line ranges, and no file is read whole.

    Code maps were inspired by ripwire.

    Model
    openai/gpt-5.5
    Length
    0:40

    Docsfile_indexcode_mapcode_refs

  • The reply For 240 orders, all four limits are within the listOrders maximum of 100, above a table of limit, pages, and orders on the last page. A limit of 7 gives 35 pages with 2 orders on the last, 25 gives 10 with 15, 50 gives 5 with 40, and 100 gives 3 with 40.

    Compute with Python

    A real session in the demo project, in Plan mode. The prompt asks how many pages listOrders returns for 240 orders at four limits. A python_execution card shows one line of code and its result, and the reply turns it into a table: 35, 10, 5, and 3 pages. The interpreter has no file system, network, or environment variables.

    Model
    openai/gpt-6-sol
    Length
    0:40

    Docspython_execution

MCP servers

The model reaches MCP servers by writing Python in one mcp tool. Each server call still passes your permission rules.

  • The mcp card with a snippet that calls home.intent__HassTurnOff for five lights through asyncio.gather. Below it, each call is a child row, Turn off with the name of the light, marked action done with a check mark for Bed Light, Office RGBW Lights, Ceiling Lights, and Entrance Color + White Lights.

    Call MCP servers from Python

    A real session in the demo project, with Home Assistant and its demo integration running in a local container as an MCP server. /mcp lists the home server with 28 tools. The prompt asks to turn off every light except the living room and for the temperature of each climate device. The model writes Python in the mcp tool: one snippet reads the live context, and a second turns off five lights at once with asyncio.gather. Each server call passes the permission rules, so the take allows the read for the conversation, and the light calls with any arguments after a second Enter. The reply names the lights and shows a table of three climate devices. A question about the front door asks again, because Home Assistant lock devices always ask.

    The server is Home Assistant with its demo integration, running in a local container. No real devices take part.

    Model
    openai/gpt-6.1-sol
    Length
    1:40

    DocsCode modeHome AssistantMCP tool callsThe mcp tool

Permissions

Caudra parses each shell command and asks only about the parts that no rule allows. The prompt shows the exact scope before you store a rule.

  • The Allow shell commands? prompt for make seed && git diff --stat | tail -1, with 1 of 3 new in its title. It marks make seed as new with the scope ‹make seed›, and git diff --stat and tail -1 as allowed and read-only. Below are four choices, from Yes to No with instructions for the agent. Choice 3 notes Learned from 3 similar commands, and the keys widen or narrow the scope.

    Approve one part of a command

    A real session in the demo project. The model runs make seed && git diff --stat | tail -1 as one command. The approval lists each part, and only make seed asks, because git diff --stat and tail -1 are already allowed as read-only. The arrow keys widen the scope from make seed to make seed * and make *, then narrow it again, and ? explains why Caudra asks and what choices 2 and 3 would allow. The command runs once, no rule is stored, and the reply says that the fixtures did not change.

    Model
    openai/gpt-5.6-terra
    Length
    0:51

    DocsPermission promptsPer-command scopesShell parsing

In the terminal

Replies render tables, Mermaid diagrams, and maths. The manual, the themes, and the draft stash are each one command away.

  • A reply in the terminal. A bordered table lists the four steps of paginate, from Read the cursor to Build the next cursor, with what each step does. Below it, a Mermaid flowchart starts at Start with rows and request and branches at Cursor provided? into Decode cursor to ID and Use ID 0.

    Tables, diagrams, and maths in replies

    A real session in the demo project. One prompt asks how paginate works, as a table of its steps, a Mermaid flowchart, and a LaTeX formula for the page count. The reply draws the table with borders, the flowchart as boxes and arrows, and the formula as ⌈n/k⌉. The mouse wheel scrolls back up to the table.

    Model
    openai/gpt-6-luna
    Length
    0:58

    DocsMathsDiagrams

  • The answer src/orders.ts sets the maximum page size: MAX_LIMIT = 100 (line 10), under the question Which file sets the largest page size? and two searches and a read. The composer below holds the restored draft, Rename listOrders to findOrders everywhere, update the tests, and run make check.

    Stash a draft

    A real session in the demo project. A draft asks to rename listOrders everywhere. Ctrl+X s stashes it, and the toast reads Stashed (1 total). A question about the largest page size gets its answer, and Ctrl+X p brings the draft back to the composer unchanged. The draft stays out of the conversation until you send it.

    Model
    openai/gpt-6-luna
    Length
    0:50

    DocsStash

  • The finished session in the tokyonight theme, with a dark blue background, blue file paths, green todos, and orange test counts. The reply names the root cause, the change at src/pagination.ts:29, and the regression test at src/pagination.test.ts:30, and reports make check passed: 8 tests passed, 0 failed.

    Preview themes on a real session

    A real session in the demo project after a fix. /theme lists the themes, and the whole interface changes color as catppuccin_mocha, catppuccin_latte, and tokyonight are typed in turn. Enter keeps tokyonight. A second /theme returns to caudra-dark, the theme of the other recordings.

    Model
    openai/gpt-6.1-sol
    Length
    0:35

    Docs/themeui.theme

  • The Docs reader open at Token Economy, Cache hit rate. The contents list the guides and concepts on the left, and the section on the right explains how /usage scores the cache hit rate, with the search terms highlighted.

    Search the manual offline

    A real session in the demo project. /docs opens the manual that ships in the binary. A search for cache hit finds 8 sections, Enter opens Cache hit rate, and n jumps to the next match. No request goes to the model.

    Model
    openai/gpt-6.1-sol
    Length
    0:23

    Docs/docs

Scripts

caudra -p runs the same agent without the interface and prints text or JSON for other tools.

  • A shell after two caudra -p runs. The first printed the three failing tests and a likely cause in two lines. The second printed JSON with a result that reports 4 passed and 3 failed, num_turns 2, and duration_ms 3189.

    Run Caudra from a script

    A real shell session in the demo project. The output of bun test is piped into caudra -p with a prompt, and the reply names the three failing tests and the cause that the model suspects. A second run with --output-format json lets the agent run make check under a stored rule, and jq picks the result, the number of turns, and the duration from the JSON.

    Model
    openai/gpt-6-luna
    Length
    0:50

    DocsHeadless modeOutput formats

caudra.
DocumentationRecordings galleryReference configsRelease notesTelemetryDiscussionsFor language modelsWebsite privacy and analytics

Caudra was created by Thorsten Born, who develops and maintains it. It stands on the shoulders of Maki and has grown in its own direction since the fork.

caudra.