Skip to main content
Version: 0.6.3

Native Editor Conversation

ClaudusBridge turns the Unreal Editor itself into the chat interface. You don't need an external IDE or terminal to talk to a provider — the engine ships a dedicated Claudus dashboard tab plus matching Output Log commands. Provider replies (Claude, ChatGPT, Gemini), external execution-agent activity (Claude Code, Codex, Cursor, Windsurf, Claude Desktop), and tool-result evidence all share one conversation.

This guide covers:

  • The dashboard tab and what it shows
  • The native Output Log commands (/login, /provider, /model, /access, /logs, …)
  • How providers and external execution agents share the same transcript
  • The six native log categories that route every message through Unreal's own logging

The dashboard tab

Open Window → Claudus in the editor (also reachable by name through the engine's tab spawn menu). The panel contains:

  • Transcript — color-coded entries by role: 🟦 Human (you), 🟪 Agent (connected external client), 🟩 Claudus (provider reply), ⚪ System (tool results, status changes, audit entries). Each entry shows the model, latency, and (when applicable) input/output token counts.
  • Input box — type natural-language messages directly to the active provider. Press Enter to send. Multi-line is supported via Shift+Enter.
  • Quick actions — login, provider/model picker, access-mode toggle, clear transcript, refresh provider runtime state.
  • Activity strip — current action-queue counts (pending / claimed / completed), MCP tool count, runtime port, last provider latency.

The transcript persists across editor restarts (capped at the configured MaxChatLogEntries, 256 by default). MCP tools claudus_get_log, claudus_get_event_delta, claudus_cognitive_state expose the same data programmatically.


Native Output Log commands

Every dashboard action is also reachable from Unreal's own console (the Output Log's command bar). The engine's console executor recognises a Claudus namespace; any input prefixed with Claudus: is routed through Claudus. There's also a short cb: alias that does the same thing for terminal-style use.

Plain text without a leading slash is sent as natural-language input to the active provider — exactly like typing in the dashboard:

Claudus: hola, dime que ves en la escena actual

Slash commands handle setup, login, model selection, and access control:

Help and status

CommandWhat it does
/helpShow the full command list inline
/statusShow provider, model, access mode, token totals, action queue counts, MCP tool count, runtime port
/actionsShow the current action queue counters (pending / claimed / completed)
/refreshRe-check the provider runtime / auth state
/clearClear the visible Claudus transcript (provider memory and saved Claudus knowledge are NOT deleted)

Provider lifecycle

CommandWhat it does
/runtime startBoot the standalone Claudus provider runtime if it isn't online yet
/login chatgptLogin or re-login the ChatGPT account through the local runtime
/login claudeLogin or re-login the Claude account (Claude.ai OAuth, not the raw Anthropic API key path)
/login geminiLogin or re-login Gemini Code Assist
/logout chatgpt | /logout claude | /logout geminiRevoke the session for that provider

The login flow happens entirely through the local provider runtime — no browser pop-ups from the editor itself, no manual token paste. Once the runtime authenticates, the editor's dispatch.json sentinel updates and the dashboard reflects the new auth state.

Provider / model picker

/provider chooses the account route only. /model chooses the exact model. Use them in either order.

ProviderModels
/provider chatgpt/model gpt-5.5, /model gpt-5.4, /model gpt-5.4-mini, /model gpt-5.3-codex
/provider claude/model claude-opus-4.7-1m (alias opus 4.7 m), /model claude-opus-4.7, /model claude-opus-4.6-1m, /model claude-opus-4.6, /model claude-sonnet-4.6-1m, /model claude-sonnet-4.6, /model claude-haiku-4.5
/provider gemini/model gemini-3-pro, /model gemini-3.1-pro, /model gemini-2.5-pro, /model gemini-3-flash, /model gemini-2.5-flash

Short aliases also work (opus m, opus, sonnet m, sonnet, haiku, mini, codex, flash), but the UI favors the exact route strings for clarity.

After selecting, run /connect to activate the route. /models prints the full catalog with aliases.

Access mode

CommandWhat it does
/access fullEnable full-access action requests (default for professional workstations)
/access limitedReturn to limited-access mode — allowlisted read-only native tools auto-run; mutating tools wait

Mode transitions are audited in the transcript as system entries with timestamp, requester, reason, and old/new mode. See Access mode controls below.

Log filtering

The engine's Output Log can be very chatty. Two commands flip the native category filter to make Claudus easier to read:

CommandWhat it does
/logs claudusFilter the Output Log to the six Claudus categories plus warnings/errors. Quiet conversation mode.
/logs allRestore all engine log categories.

Posting an agent note inline

CommandWhat it does
/note <agent>: <message>Post a note as if it came from a connected execution agent named <agent>. Same effect as calling claudus_agent_note from MCP. Aliases: agent-note, agentnote.

Example: /note Codex: starting full build, ~3 min estimate


Six native log categories

Every chat entry routes to a dedicated Unreal log category. That means everything you see in the dashboard is also available in the engine's normal Output Log, searchable with the standard filter, and capturable by any tool that hooks UE logging:

CategoryCarries
LogClaudusChatGPTReplies from the active ChatGPT model
LogClaudusClaudeReplies from the active Claude model
LogClaudusGeminiReplies from the active Gemini model
LogClaudusUserYour own messages (Human role)
LogClaudusAgentMessages from connected external execution agents (Claude Code, Codex CLI, Cursor, Windsurf, …)
LogClaudusSystemTool-result entries, provider-connect status, auto-continuation markers, audit entries

Because these are real UE log categories, you can:

  • Use the Output Log Filters dropdown to show only the providers you care about
  • Tail Saved/Logs/<Project>.log directly from a terminal for a transcript export
  • Search across sessions with normal log-grep workflows
  • Set per-category verbosity from DefaultEngine.ini if you want to suppress one provider

The categories are defined statically in C++ and ship enabled at Log verbosity. No configuration needed.


Multi-AI shared transcript

The conversation is not locked to one AI at a time. The full architecture is:

  1. Providers (Claude / ChatGPT / Gemini) connect through the local Claudus runtime and answer natural-language messages. Their replies land in LogClaudusClaude / LogClaudusChatGPT / LogClaudusGemini.
  2. External execution agents (Claude Code, Codex CLI, Cursor, Windsurf, Claude Desktop, any MCP-compatible client) connect over HTTP to the ClaudusBridge MCP server (port 3000 by default). They see the same transcript and can post into it via claudus_agent_note.
  3. When a provider needs real OS / filesystem / shell / browser / source-control / build / out-of-root work done, it emits a [Claudus Action Request] block. ClaudusBridge queues the block as an action.
  4. Execution agents claim and run the action via claudus_get_action_requests + claudus_provide_action_result. The result lands back in the transcript as evidence with timestamps, output paths, and a compact summary.
  5. The provider reads the action result on its next turn and continues the conversation.

Why this matters

Providers are great at reasoning and planning but can't reach outside the chat. External execution agents are great at running real work but can't reason as deeply. The shared transcript lets each play to its strengths inside one conversation — the user doesn't have to copy/paste between an LLM chat and a coding agent.

Visibility for execution agents

Connected agents can mirror their own progress into the dashboard so the user sees what they're doing:

# From the Python helper
cb note "Codex: starting full build, ~3 min estimate"

# Or as an MCP tool call
{ "name": "claudus_agent_note",
"arguments": { "from": "Codex", "text": "Starting full build, ~3 min estimate" } }

The note lands in LogClaudusAgent and the dashboard with the sender's name color-coded.


Access mode controls

ClaudusBridge starts in Full Access by default for professional workstation workflows. In Full Access, all native tools can run and provider-authored action requests auto-execute through the Claudus Native Tool Executor without human approval per action.

Limited Access narrows the auto-run allowlist. The following read-only native tools still auto-run in limited mode:

  • ai_brain_map, claudus_cognitive_state, get_project_info, find_assets, get_asset_details, list_asset_types, get_current_map, get_editor_state, get_viewport_info, pixel_streaming_status, ai_perceive, ai_vision_stream, describe_view, get_actors_in_view, read_blueprint, preview_texture_asset, open_asset_editor, open_blueprint_editor

Everything else (creates, writes, deletes, builds, rebuilds, plugin-file edits, gallery image generation, full ai_create paths) waits for Full Access.

Switching modes

Three equivalent paths:

/access full        ← Output Log command
/access limited ← Output Log command

claudus_set_access_mode(mode, confirm, agent_name, reason)
claudus_press_access_button(confirm, agent_name, reason) ← compatibility helper

Every transition gets audited in the transcript:

[system:access-changed] 2026-05-15T07:42:03Z
changed_by: Codex
reason: "Running scoped rebuild for newly authored tool"
mode: Limited Access → Full Access

Repeated same-mode requests are still recorded with last_request_by, last_request_reason, last_requested_mode even when changed=false. Provider chat prose alone cannot bypass executor evidence — saying "I'll switch to full access" is not the same as the action actually firing.

Backward-compatible input aliases

As of v0.6.4 every emitted label uses the English strings "Full Access" / "Limited Access" — raw tool-response JSON, audit-note entries in the chat log, dashboard tooltip, button labels, and embedded markdown generators all match. The input parser still accepts the lowercase Spanish aliases acceso completo / acceso limitado (and completo / limitado) for backward compatibility with older sessions, alongside the new full access / limited access aliases. If you are reading chat logs persisted before v0.6.4, you may still see the legacy Spanish strings in those archived entries.


Where to go next