Latest commit

History

4,482 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

T3 Code

T3 Code is a minimal web GUI for coding agents made by Pingdotgg. This project is a downstream fork of the original T3 Code, maintained in aaditagrawal/t3code.

This fork focuses on expanding provider support, keeping usage and limit monitoring visible, improving persistence layers, and refining provider management across the app. The current branded release is T3 Code v0.0.36 — ACP Edition.

It supports configurable stdio ACP agents, Codex, Claude Code, Cursor, Droid, Fx, Grok Build, OpenCode, Amp, Copilot, Gemini CLI, Hermes Agent, Kilo, Oh My Pi, and Pi.

(NOTE: Amp /mode free is not supported, as Amp Code doesn't support it in headless mode - since they need to show ads for that business model to work.)

Why this fork?

This fork aims to provide a more robust and feature-rich multi-provider experience, with improved server management, visible usage/rate-limit monitoring, more reliable persistence of orchestration events, and UI refinements for settings and model selection.

The protected fork features are multi-provider runtime support, usage and limit monitoring, provider management UX, and provider-neutral orchestration reliability. Upstream syncs should preserve those unless a change explicitly replaces them with equivalent or better behavior.

Multi-provider support (Enhanced)

Adds full provider adapters (server managers, service layers, runtime layers) for agents that are not yet on the upstream roadmap:

ProviderWhat's included
Codex CLIApp-server JSON-RPC support with usage/rate-limit monitoring
Claude CodeFull adapter with permission mode, thinking token limits, and SDK typings
CursorTypeScript SDK adapter + SDK model discovery + usage-dashboard tracking
DroidFactory Droid SDK runtime integration
FxACP integration through fx acp
Grok BuildACP adapter with xAI protocol extensions
OpenCodeAdapter with hostname/port/workspace config
AmpAdapter + ampServerManager for headless Amp sessions
GitHub CopilotAdapter + CLI binary resolution + text generation layer
Gemini CLIEnhanced: Adapter + geminiCliServerManager with full test coverage
KiloAdapter + kiloServerManager + OpenCode-style server URL config
Hermes AgentACP chats plus an optional companion for Home, cron, handoffs, and media
Oh My PiACP integration through the built-in omp acp mode
PiACP integration through pi-acp, with shared model and session handling
ACP AgentConfigurable executable and argument list for any stdio ACP implementation

Hermes uses hermes-acp for ordinary interactive conversations. Its optional T3 companion plugin adds enrollment, proactive Home and cron delivery, handoffs, and media without replacing the standard ACP path. Oh My Pi runs its native ACP server through omp acp, while Pi stays on the shared transport through pi-acp.

Configurable ACP agents

In Settings → Providers, add an ACP Agent instance, enter its executable, and put one command argument on each line. Credentials and model configuration stay agent-owned; instance environment variables are inherited by the ACP process. This keeps T3 on the standard protocol instead of adding a transport fork for every compatible agent.

Real OpenRouter turns using dots-studio/dots-3-note-preview:free are covered by the live ACP harness for:

AgentExecutableArguments, one per line
Goosegooseacp
OpenCodeopencodeacp
Qwen Codeqwen--acp
--experimental-skills
fast-agentfast-agent-acpConfigure the model with its CLI or config
Docker Agentdocker-agentserve
acp
/path/to/agent.yaml

Hermes, Oh My Pi, and Pi remain available as branded presets because Hermes has companion capabilities and the two Pi-family agents have distinct install and launch paths. For Pi models whose OpenRouter metadata advertises maximum output equal to the entire context window, install the T3 Pi compatibility extension. It omits the unsafe request field rather than imposing a replacement token cap.

Kimi CLI and Cline can launch over ACP, but their current ACP servers require their own account authentication before session/new, even when an OpenRouter key and custom model are configured. They can still be added through ACP Agent after completing that vendor login, but OpenRouter alone is not sufficient in the versions tested.

Persistence & Orchestration Improvements

  • Normalized Provider Kinds: Migration added to handle legacy provider kind naming consistently.
  • Improved Event Store: Robust persistence layer for orchestration events with better error handling.
  • Session Management: refined ProviderSessionDirectory for better tracking of active sessions.

UX enhancements

FeatureDescription
Settings pageDedicated route (/settings) for theme, accent color, and custom model slug configuration
Accent color systemPreset palette with contrast-safe terminal color injection across the entire UI
Theme supportLight / dark / system modes with transition suppression
Command paletteCmd+K / Ctrl+K palette for quick actions, script running, and thread navigation
Sidebar searchNormalized thread title search with instant filtering
Plan sidebarDedicated panel for reviewing, downloading, or saving proposed agent plans
Terminal drawerTheme-aware integrated terminal with accent color styling
Usage monitoringContext window meter, token usage events, and account rate-limit banner/panel visibility

Getting started

Quick install (recommended)

Run the interactive installer — it detects your OS, checks prerequisites (git, Node.js ≥ 24, bun ≥ 1.3.9), installs missing tools, and lets you choose between development/production and desktop/web builds:

# macOS / Linux / WSL
bash <(curl -fsSL https://raw.githubusercontent.com/aaditagrawal/t3code/main/scripts/install.sh)
# Windows (Git Bash, MSYS2, or WSL)
bash <(curl -fsSL https://raw.githubusercontent.com/aaditagrawal/t3code/main/scripts/install.sh)

Manual build

Warning

You need at least one supported coding agent installed and authorized. See the supported agents list below.

# Prerequisites: Bun >=1.3.9, Node >=24.13.1
git clone https://github.com/aaditagrawal/t3code.git
cd t3code
bun install
bun run dev

Supported agents

Notes

  • This project is very early in development. Expect bugs.
  • Interested in contributing? See CONTRIBUTING.md.
  • Special thanks to Pingdotgg for the original project and aaditagrawal for the foundational fork.

About

Resources

Contributing

Stars

25 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

4,482 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

T3 Code

T3 Code is a minimal web GUI for coding agents made by Pingdotgg. This project is a downstream fork of the original T3 Code, maintained in aaditagrawal/t3code.

This fork focuses on expanding provider support, keeping usage and limit monitoring visible, improving persistence layers, and refining provider management across the app. The current branded release is T3 Code v0.0.36 — ACP Edition.

It supports configurable stdio ACP agents, Codex, Claude Code, Cursor, Droid, Fx, Grok Build, OpenCode, Amp, Copilot, Gemini CLI, Hermes Agent, Kilo, Oh My Pi, and Pi.

(NOTE: Amp /mode free is not supported, as Amp Code doesn't support it in headless mode - since they need to show ads for that business model to work.)

Why this fork?

This fork aims to provide a more robust and feature-rich multi-provider experience, with improved server management, visible usage/rate-limit monitoring, more reliable persistence of orchestration events, and UI refinements for settings and model selection.

The protected fork features are multi-provider runtime support, usage and limit monitoring, provider management UX, and provider-neutral orchestration reliability. Upstream syncs should preserve those unless a change explicitly replaces them with equivalent or better behavior.

Multi-provider support (Enhanced)

Adds full provider adapters (server managers, service layers, runtime layers) for agents that are not yet on the upstream roadmap:

ProviderWhat's included
Codex CLIApp-server JSON-RPC support with usage/rate-limit monitoring
Claude CodeFull adapter with permission mode, thinking token limits, and SDK typings
CursorTypeScript SDK adapter + SDK model discovery + usage-dashboard tracking
DroidFactory Droid SDK runtime integration
FxACP integration through fx acp
Grok BuildACP adapter with xAI protocol extensions
OpenCodeAdapter with hostname/port/workspace config
AmpAdapter + ampServerManager for headless Amp sessions
GitHub CopilotAdapter + CLI binary resolution + text generation layer
Gemini CLIEnhanced: Adapter + geminiCliServerManager with full test coverage
KiloAdapter + kiloServerManager + OpenCode-style server URL config
Hermes AgentACP chats plus an optional companion for Home, cron, handoffs, and media
Oh My PiACP integration through the built-in omp acp mode
PiACP integration through pi-acp, with shared model and session handling
ACP AgentConfigurable executable and argument list for any stdio ACP implementation

Hermes uses hermes-acp for ordinary interactive conversations. Its optional T3 companion plugin adds enrollment, proactive Home and cron delivery, handoffs, and media without replacing the standard ACP path. Oh My Pi runs its native ACP server through omp acp, while Pi stays on the shared transport through pi-acp.

Configurable ACP agents

In Settings → Providers, add an ACP Agent instance, enter its executable, and put one command argument on each line. Credentials and model configuration stay agent-owned; instance environment variables are inherited by the ACP process. This keeps T3 on the standard protocol instead of adding a transport fork for every compatible agent.

Real OpenRouter turns using dots-studio/dots-3-note-preview:free are covered by the live ACP harness for:

AgentExecutableArguments, one per line
Goosegooseacp
OpenCodeopencodeacp
Qwen Codeqwen--acp
--experimental-skills
fast-agentfast-agent-acpConfigure the model with its CLI or config
Docker Agentdocker-agentserve
acp
/path/to/agent.yaml

Hermes, Oh My Pi, and Pi remain available as branded presets because Hermes has companion capabilities and the two Pi-family agents have distinct install and launch paths. For Pi models whose OpenRouter metadata advertises maximum output equal to the entire context window, install the T3 Pi compatibility extension. It omits the unsafe request field rather than imposing a replacement token cap.

Kimi CLI and Cline can launch over ACP, but their current ACP servers require their own account authentication before session/new, even when an OpenRouter key and custom model are configured. They can still be added through ACP Agent after completing that vendor login, but OpenRouter alone is not sufficient in the versions tested.

Persistence & Orchestration Improvements

  • Normalized Provider Kinds: Migration added to handle legacy provider kind naming consistently.
  • Improved Event Store: Robust persistence layer for orchestration events with better error handling.
  • Session Management: refined ProviderSessionDirectory for better tracking of active sessions.

UX enhancements

FeatureDescription
Settings pageDedicated route (/settings) for theme, accent color, and custom model slug configuration
Accent color systemPreset palette with contrast-safe terminal color injection across the entire UI
Theme supportLight / dark / system modes with transition suppression
Command paletteCmd+K / Ctrl+K palette for quick actions, script running, and thread navigation
Sidebar searchNormalized thread title search with instant filtering
Plan sidebarDedicated panel for reviewing, downloading, or saving proposed agent plans
Terminal drawerTheme-aware integrated terminal with accent color styling
Usage monitoringContext window meter, token usage events, and account rate-limit banner/panel visibility

Getting started

Quick install (recommended)

Run the interactive installer — it detects your OS, checks prerequisites (git, Node.js ≥ 24, bun ≥ 1.3.9), installs missing tools, and lets you choose between development/production and desktop/web builds:

# macOS / Linux / WSL
bash <(curl -fsSL https://raw.githubusercontent.com/aaditagrawal/t3code/main/scripts/install.sh)
# Windows (Git Bash, MSYS2, or WSL)
bash <(curl -fsSL https://raw.githubusercontent.com/aaditagrawal/t3code/main/scripts/install.sh)

Manual build

Warning

You need at least one supported coding agent installed and authorized. See the supported agents list below.

# Prerequisites: Bun >=1.3.9, Node >=24.13.1
git clone https://github.com/aaditagrawal/t3code.git
cd t3code
bun install
bun run dev

Supported agents

Notes

  • This project is very early in development. Expect bugs.
  • Interested in contributing? See CONTRIBUTING.md.
  • Special thanks to Pingdotgg for the original project and aaditagrawal for the foundational fork.

About

Resources

Contributing

Stars

25 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

4,482 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

T3 Code

T3 Code is a minimal web GUI for coding agents made by Pingdotgg. This project is a downstream fork of the original T3 Code, maintained in aaditagrawal/t3code.

This fork focuses on expanding provider support, keeping usage and limit monitoring visible, improving persistence layers, and refining provider management across the app. The current branded release is T3 Code v0.0.36 — ACP Edition.

It supports configurable stdio ACP agents, Codex, Claude Code, Cursor, Droid, Fx, Grok Build, OpenCode, Amp, Copilot, Gemini CLI, Hermes Agent, Kilo, Oh My Pi, and Pi.

(NOTE: Amp /mode free is not supported, as Amp Code doesn't support it in headless mode - since they need to show ads for that business model to work.)

Why this fork?

This fork aims to provide a more robust and feature-rich multi-provider experience, with improved server management, visible usage/rate-limit monitoring, more reliable persistence of orchestration events, and UI refinements for settings and model selection.

The protected fork features are multi-provider runtime support, usage and limit monitoring, provider management UX, and provider-neutral orchestration reliability. Upstream syncs should preserve those unless a change explicitly replaces them with equivalent or better behavior.

Multi-provider support (Enhanced)

Adds full provider adapters (server managers, service layers, runtime layers) for agents that are not yet on the upstream roadmap:

ProviderWhat's included
Codex CLIApp-server JSON-RPC support with usage/rate-limit monitoring
Claude CodeFull adapter with permission mode, thinking token limits, and SDK typings
CursorTypeScript SDK adapter + SDK model discovery + usage-dashboard tracking
DroidFactory Droid SDK runtime integration
FxACP integration through fx acp
Grok BuildACP adapter with xAI protocol extensions
OpenCodeAdapter with hostname/port/workspace config
AmpAdapter + ampServerManager for headless Amp sessions
GitHub CopilotAdapter + CLI binary resolution + text generation layer
Gemini CLIEnhanced: Adapter + geminiCliServerManager with full test coverage
KiloAdapter + kiloServerManager + OpenCode-style server URL config
Hermes AgentACP chats plus an optional companion for Home, cron, handoffs, and media
Oh My PiACP integration through the built-in omp acp mode
PiACP integration through pi-acp, with shared model and session handling
ACP AgentConfigurable executable and argument list for any stdio ACP implementation

Hermes uses hermes-acp for ordinary interactive conversations. Its optional T3 companion plugin adds enrollment, proactive Home and cron delivery, handoffs, and media without replacing the standard ACP path. Oh My Pi runs its native ACP server through omp acp, while Pi stays on the shared transport through pi-acp.

Configurable ACP agents

In Settings → Providers, add an ACP Agent instance, enter its executable, and put one command argument on each line. Credentials and model configuration stay agent-owned; instance environment variables are inherited by the ACP process. This keeps T3 on the standard protocol instead of adding a transport fork for every compatible agent.

Real OpenRouter turns using dots-studio/dots-3-note-preview:free are covered by the live ACP harness for:

AgentExecutableArguments, one per line
Goosegooseacp
OpenCodeopencodeacp
Qwen Codeqwen--acp
--experimental-skills
fast-agentfast-agent-acpConfigure the model with its CLI or config
Docker Agentdocker-agentserve
acp
/path/to/agent.yaml

Hermes, Oh My Pi, and Pi remain available as branded presets because Hermes has companion capabilities and the two Pi-family agents have distinct install and launch paths. For Pi models whose OpenRouter metadata advertises maximum output equal to the entire context window, install the T3 Pi compatibility extension. It omits the unsafe request field rather than imposing a replacement token cap.

Kimi CLI and Cline can launch over ACP, but their current ACP servers require their own account authentication before session/new, even when an OpenRouter key and custom model are configured. They can still be added through ACP Agent after completing that vendor login, but OpenRouter alone is not sufficient in the versions tested.

Persistence & Orchestration Improvements

  • Normalized Provider Kinds: Migration added to handle legacy provider kind naming consistently.
  • Improved Event Store: Robust persistence layer for orchestration events with better error handling.
  • Session Management: refined ProviderSessionDirectory for better tracking of active sessions.

UX enhancements

FeatureDescription
Settings pageDedicated route (/settings) for theme, accent color, and custom model slug configuration
Accent color systemPreset palette with contrast-safe terminal color injection across the entire UI
Theme supportLight / dark / system modes with transition suppression
Command paletteCmd+K / Ctrl+K palette for quick actions, script running, and thread navigation
Sidebar searchNormalized thread title search with instant filtering
Plan sidebarDedicated panel for reviewing, downloading, or saving proposed agent plans
Terminal drawerTheme-aware integrated terminal with accent color styling
Usage monitoringContext window meter, token usage events, and account rate-limit banner/panel visibility

Getting started

Quick install (recommended)

Run the interactive installer — it detects your OS, checks prerequisites (git, Node.js ≥ 24, bun ≥ 1.3.9), installs missing tools, and lets you choose between development/production and desktop/web builds:

# macOS / Linux / WSL
bash <(curl -fsSL https://raw.githubusercontent.com/aaditagrawal/t3code/main/scripts/install.sh)
# Windows (Git Bash, MSYS2, or WSL)
bash <(curl -fsSL https://raw.githubusercontent.com/aaditagrawal/t3code/main/scripts/install.sh)

Manual build

Warning

You need at least one supported coding agent installed and authorized. See the supported agents list below.

# Prerequisites: Bun >=1.3.9, Node >=24.13.1
git clone https://github.com/aaditagrawal/t3code.git
cd t3code
bun install
bun run dev

Supported agents

Notes

  • This project is very early in development. Expect bugs.
  • Interested in contributing? See CONTRIBUTING.md.
  • Special thanks to Pingdotgg for the original project and aaditagrawal for the foundational fork.

About

Resources

Contributing

Stars

25 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

4,482 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

T3 Code

T3 Code is a minimal web GUI for coding agents made by Pingdotgg. This project is a downstream fork of the original T3 Code, maintained in aaditagrawal/t3code.

This fork focuses on expanding provider support, keeping usage and limit monitoring visible, improving persistence layers, and refining provider management across the app. The current branded release is T3 Code v0.0.36 — ACP Edition.

It supports configurable stdio ACP agents, Codex, Claude Code, Cursor, Droid, Fx, Grok Build, OpenCode, Amp, Copilot, Gemini CLI, Hermes Agent, Kilo, Oh My Pi, and Pi.

(NOTE: Amp /mode free is not supported, as Amp Code doesn't support it in headless mode - since they need to show ads for that business model to work.)

Why this fork?

This fork aims to provide a more robust and feature-rich multi-provider experience, with improved server management, visible usage/rate-limit monitoring, more reliable persistence of orchestration events, and UI refinements for settings and model selection.

The protected fork features are multi-provider runtime support, usage and limit monitoring, provider management UX, and provider-neutral orchestration reliability. Upstream syncs should preserve those unless a change explicitly replaces them with equivalent or better behavior.

Multi-provider support (Enhanced)

Adds full provider adapters (server managers, service layers, runtime layers) for agents that are not yet on the upstream roadmap:

ProviderWhat's included
Codex CLIApp-server JSON-RPC support with usage/rate-limit monitoring
Claude CodeFull adapter with permission mode, thinking token limits, and SDK typings
CursorTypeScript SDK adapter + SDK model discovery + usage-dashboard tracking
DroidFactory Droid SDK runtime integration
FxACP integration through fx acp
Grok BuildACP adapter with xAI protocol extensions
OpenCodeAdapter with hostname/port/workspace config
AmpAdapter + ampServerManager for headless Amp sessions
GitHub CopilotAdapter + CLI binary resolution + text generation layer
Gemini CLIEnhanced: Adapter + geminiCliServerManager with full test coverage
KiloAdapter + kiloServerManager + OpenCode-style server URL config
Hermes AgentACP chats plus an optional companion for Home, cron, handoffs, and media
Oh My PiACP integration through the built-in omp acp mode
PiACP integration through pi-acp, with shared model and session handling
ACP AgentConfigurable executable and argument list for any stdio ACP implementation

Hermes uses hermes-acp for ordinary interactive conversations. Its optional T3 companion plugin adds enrollment, proactive Home and cron delivery, handoffs, and media without replacing the standard ACP path. Oh My Pi runs its native ACP server through omp acp, while Pi stays on the shared transport through pi-acp.

Configurable ACP agents

In Settings → Providers, add an ACP Agent instance, enter its executable, and put one command argument on each line. Credentials and model configuration stay agent-owned; instance environment variables are inherited by the ACP process. This keeps T3 on the standard protocol instead of adding a transport fork for every compatible agent.

Real OpenRouter turns using dots-studio/dots-3-note-preview:free are covered by the live ACP harness for:

AgentExecutableArguments, one per line
Goosegooseacp
OpenCodeopencodeacp
Qwen Codeqwen--acp
--experimental-skills
fast-agentfast-agent-acpConfigure the model with its CLI or config
Docker Agentdocker-agentserve
acp
/path/to/agent.yaml

Hermes, Oh My Pi, and Pi remain available as branded presets because Hermes has companion capabilities and the two Pi-family agents have distinct install and launch paths. For Pi models whose OpenRouter metadata advertises maximum output equal to the entire context window, install the T3 Pi compatibility extension. It omits the unsafe request field rather than imposing a replacement token cap.

Kimi CLI and Cline can launch over ACP, but their current ACP servers require their own account authentication before session/new, even when an OpenRouter key and custom model are configured. They can still be added through ACP Agent after completing that vendor login, but OpenRouter alone is not sufficient in the versions tested.

Persistence & Orchestration Improvements

  • Normalized Provider Kinds: Migration added to handle legacy provider kind naming consistently.
  • Improved Event Store: Robust persistence layer for orchestration events with better error handling.
  • Session Management: refined ProviderSessionDirectory for better tracking of active sessions.

UX enhancements

FeatureDescription
Settings pageDedicated route (/settings) for theme, accent color, and custom model slug configuration
Accent color systemPreset palette with contrast-safe terminal color injection across the entire UI
Theme supportLight / dark / system modes with transition suppression
Command paletteCmd+K / Ctrl+K palette for quick actions, script running, and thread navigation
Sidebar searchNormalized thread title search with instant filtering
Plan sidebarDedicated panel for reviewing, downloading, or saving proposed agent plans
Terminal drawerTheme-aware integrated terminal with accent color styling
Usage monitoringContext window meter, token usage events, and account rate-limit banner/panel visibility

Getting started

Quick install (recommended)

Run the interactive installer — it detects your OS, checks prerequisites (git, Node.js ≥ 24, bun ≥ 1.3.9), installs missing tools, and lets you choose between development/production and desktop/web builds:

# macOS / Linux / WSL
bash <(curl -fsSL https://raw.githubusercontent.com/aaditagrawal/t3code/main/scripts/install.sh)
# Windows (Git Bash, MSYS2, or WSL)
bash <(curl -fsSL https://raw.githubusercontent.com/aaditagrawal/t3code/main/scripts/install.sh)

Manual build

Warning

You need at least one supported coding agent installed and authorized. See the supported agents list below.

# Prerequisites: Bun >=1.3.9, Node >=24.13.1
git clone https://github.com/aaditagrawal/t3code.git
cd t3code
bun install
bun run dev

Supported agents

Notes

  • This project is very early in development. Expect bugs.
  • Interested in contributing? See CONTRIBUTING.md.
  • Special thanks to Pingdotgg for the original project and aaditagrawal for the foundational fork.

About

Resources

Contributing

Stars

25 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

4,482 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

T3 Code

T3 Code is a minimal web GUI for coding agents made by Pingdotgg. This project is a downstream fork of the original T3 Code, maintained in aaditagrawal/t3code.

This fork focuses on expanding provider support, keeping usage and limit monitoring visible, improving persistence layers, and refining provider management across the app. The current branded release is T3 Code v0.0.36 — ACP Edition.

It supports configurable stdio ACP agents, Codex, Claude Code, Cursor, Droid, Fx, Grok Build, OpenCode, Amp, Copilot, Gemini CLI, Hermes Agent, Kilo, Oh My Pi, and Pi.

(NOTE: Amp /mode free is not supported, as Amp Code doesn't support it in headless mode - since they need to show ads for that business model to work.)

Why this fork?

This fork aims to provide a more robust and feature-rich multi-provider experience, with improved server management, visible usage/rate-limit monitoring, more reliable persistence of orchestration events, and UI refinements for settings and model selection.

The protected fork features are multi-provider runtime support, usage and limit monitoring, provider management UX, and provider-neutral orchestration reliability. Upstream syncs should preserve those unless a change explicitly replaces them with equivalent or better behavior.

Multi-provider support (Enhanced)

Adds full provider adapters (server managers, service layers, runtime layers) for agents that are not yet on the upstream roadmap:

ProviderWhat's included
Codex CLIApp-server JSON-RPC support with usage/rate-limit monitoring
Claude CodeFull adapter with permission mode, thinking token limits, and SDK typings
CursorTypeScript SDK adapter + SDK model discovery + usage-dashboard tracking
DroidFactory Droid SDK runtime integration
FxACP integration through fx acp
Grok BuildACP adapter with xAI protocol extensions
OpenCodeAdapter with hostname/port/workspace config
AmpAdapter + ampServerManager for headless Amp sessions
GitHub CopilotAdapter + CLI binary resolution + text generation layer
Gemini CLIEnhanced: Adapter + geminiCliServerManager with full test coverage
KiloAdapter + kiloServerManager + OpenCode-style server URL config
Hermes AgentACP chats plus an optional companion for Home, cron, handoffs, and media
Oh My PiACP integration through the built-in omp acp mode
PiACP integration through pi-acp, with shared model and session handling
ACP AgentConfigurable executable and argument list for any stdio ACP implementation

Hermes uses hermes-acp for ordinary interactive conversations. Its optional T3 companion plugin adds enrollment, proactive Home and cron delivery, handoffs, and media without replacing the standard ACP path. Oh My Pi runs its native ACP server through omp acp, while Pi stays on the shared transport through pi-acp.

Configurable ACP agents

In Settings → Providers, add an ACP Agent instance, enter its executable, and put one command argument on each line. Credentials and model configuration stay agent-owned; instance environment variables are inherited by the ACP process. This keeps T3 on the standard protocol instead of adding a transport fork for every compatible agent.

Real OpenRouter turns using dots-studio/dots-3-note-preview:free are covered by the live ACP harness for:

AgentExecutableArguments, one per line
Goosegooseacp
OpenCodeopencodeacp
Qwen Codeqwen--acp
--experimental-skills
fast-agentfast-agent-acpConfigure the model with its CLI or config
Docker Agentdocker-agentserve
acp
/path/to/agent.yaml

Hermes, Oh My Pi, and Pi remain available as branded presets because Hermes has companion capabilities and the two Pi-family agents have distinct install and launch paths. For Pi models whose OpenRouter metadata advertises maximum output equal to the entire context window, install the T3 Pi compatibility extension. It omits the unsafe request field rather than imposing a replacement token cap.

Kimi CLI and Cline can launch over ACP, but their current ACP servers require their own account authentication before session/new, even when an OpenRouter key and custom model are configured. They can still be added through ACP Agent after completing that vendor login, but OpenRouter alone is not sufficient in the versions tested.

Persistence & Orchestration Improvements

  • Normalized Provider Kinds: Migration added to handle legacy provider kind naming consistently.
  • Improved Event Store: Robust persistence layer for orchestration events with better error handling.
  • Session Management: refined ProviderSessionDirectory for better tracking of active sessions.

UX enhancements

FeatureDescription
Settings pageDedicated route (/settings) for theme, accent color, and custom model slug configuration
Accent color systemPreset palette with contrast-safe terminal color injection across the entire UI
Theme supportLight / dark / system modes with transition suppression
Command paletteCmd+K / Ctrl+K palette for quick actions, script running, and thread navigation
Sidebar searchNormalized thread title search with instant filtering
Plan sidebarDedicated panel for reviewing, downloading, or saving proposed agent plans
Terminal drawerTheme-aware integrated terminal with accent color styling
Usage monitoringContext window meter, token usage events, and account rate-limit banner/panel visibility

Getting started

Quick install (recommended)

Run the interactive installer — it detects your OS, checks prerequisites (git, Node.js ≥ 24, bun ≥ 1.3.9), installs missing tools, and lets you choose between development/production and desktop/web builds:

# macOS / Linux / WSL
bash <(curl -fsSL https://raw.githubusercontent.com/aaditagrawal/t3code/main/scripts/install.sh)
# Windows (Git Bash, MSYS2, or WSL)
bash <(curl -fsSL https://raw.githubusercontent.com/aaditagrawal/t3code/main/scripts/install.sh)

Manual build

Warning

You need at least one supported coding agent installed and authorized. See the supported agents list below.

# Prerequisites: Bun >=1.3.9, Node >=24.13.1
git clone https://github.com/aaditagrawal/t3code.git
cd t3code
bun install
bun run dev

Supported agents

Notes

  • This project is very early in development. Expect bugs.
  • Interested in contributing? See CONTRIBUTING.md.
  • Special thanks to Pingdotgg for the original project and aaditagrawal for the foundational fork.

About

Resources

Contributing

Stars

25 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

4,482 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

T3 Code

T3 Code is a minimal web GUI for coding agents made by Pingdotgg. This project is a downstream fork of the original T3 Code, maintained in aaditagrawal/t3code.

This fork focuses on expanding provider support, keeping usage and limit monitoring visible, improving persistence layers, and refining provider management across the app. The current branded release is T3 Code v0.0.36 — ACP Edition.

It supports configurable stdio ACP agents, Codex, Claude Code, Cursor, Droid, Fx, Grok Build, OpenCode, Amp, Copilot, Gemini CLI, Hermes Agent, Kilo, Oh My Pi, and Pi.

(NOTE: Amp /mode free is not supported, as Amp Code doesn't support it in headless mode - since they need to show ads for that business model to work.)

Why this fork?

This fork aims to provide a more robust and feature-rich multi-provider experience, with improved server management, visible usage/rate-limit monitoring, more reliable persistence of orchestration events, and UI refinements for settings and model selection.

The protected fork features are multi-provider runtime support, usage and limit monitoring, provider management UX, and provider-neutral orchestration reliability. Upstream syncs should preserve those unless a change explicitly replaces them with equivalent or better behavior.

Multi-provider support (Enhanced)

Adds full provider adapters (server managers, service layers, runtime layers) for agents that are not yet on the upstream roadmap:

ProviderWhat's included
Codex CLIApp-server JSON-RPC support with usage/rate-limit monitoring
Claude CodeFull adapter with permission mode, thinking token limits, and SDK typings
CursorTypeScript SDK adapter + SDK model discovery + usage-dashboard tracking
DroidFactory Droid SDK runtime integration
FxACP integration through fx acp
Grok BuildACP adapter with xAI protocol extensions
OpenCodeAdapter with hostname/port/workspace config
AmpAdapter + ampServerManager for headless Amp sessions
GitHub CopilotAdapter + CLI binary resolution + text generation layer
Gemini CLIEnhanced: Adapter + geminiCliServerManager with full test coverage
KiloAdapter + kiloServerManager + OpenCode-style server URL config
Hermes AgentACP chats plus an optional companion for Home, cron, handoffs, and media
Oh My PiACP integration through the built-in omp acp mode
PiACP integration through pi-acp, with shared model and session handling
ACP AgentConfigurable executable and argument list for any stdio ACP implementation

Hermes uses hermes-acp for ordinary interactive conversations. Its optional T3 companion plugin adds enrollment, proactive Home and cron delivery, handoffs, and media without replacing the standard ACP path. Oh My Pi runs its native ACP server through omp acp, while Pi stays on the shared transport through pi-acp.

Configurable ACP agents

In Settings → Providers, add an ACP Agent instance, enter its executable, and put one command argument on each line. Credentials and model configuration stay agent-owned; instance environment variables are inherited by the ACP process. This keeps T3 on the standard protocol instead of adding a transport fork for every compatible agent.

Real OpenRouter turns using dots-studio/dots-3-note-preview:free are covered by the live ACP harness for:

AgentExecutableArguments, one per line
Goosegooseacp
OpenCodeopencodeacp
Qwen Codeqwen--acp
--experimental-skills
fast-agentfast-agent-acpConfigure the model with its CLI or config
Docker Agentdocker-agentserve
acp
/path/to/agent.yaml

Hermes, Oh My Pi, and Pi remain available as branded presets because Hermes has companion capabilities and the two Pi-family agents have distinct install and launch paths. For Pi models whose OpenRouter metadata advertises maximum output equal to the entire context window, install the T3 Pi compatibility extension. It omits the unsafe request field rather than imposing a replacement token cap.

Kimi CLI and Cline can launch over ACP, but their current ACP servers require their own account authentication before session/new, even when an OpenRouter key and custom model are configured. They can still be added through ACP Agent after completing that vendor login, but OpenRouter alone is not sufficient in the versions tested.

Persistence & Orchestration Improvements

  • Normalized Provider Kinds: Migration added to handle legacy provider kind naming consistently.
  • Improved Event Store: Robust persistence layer for orchestration events with better error handling.
  • Session Management: refined ProviderSessionDirectory for better tracking of active sessions.

UX enhancements

FeatureDescription
Settings pageDedicated route (/settings) for theme, accent color, and custom model slug configuration
Accent color systemPreset palette with contrast-safe terminal color injection across the entire UI
Theme supportLight / dark / system modes with transition suppression
Command paletteCmd+K / Ctrl+K palette for quick actions, script running, and thread navigation
Sidebar searchNormalized thread title search with instant filtering
Plan sidebarDedicated panel for reviewing, downloading, or saving proposed agent plans
Terminal drawerTheme-aware integrated terminal with accent color styling
Usage monitoringContext window meter, token usage events, and account rate-limit banner/panel visibility

Getting started

Quick install (recommended)

Run the interactive installer — it detects your OS, checks prerequisites (git, Node.js ≥ 24, bun ≥ 1.3.9), installs missing tools, and lets you choose between development/production and desktop/web builds:

# macOS / Linux / WSL
bash <(curl -fsSL https://raw.githubusercontent.com/aaditagrawal/t3code/main/scripts/install.sh)
# Windows (Git Bash, MSYS2, or WSL)
bash <(curl -fsSL https://raw.githubusercontent.com/aaditagrawal/t3code/main/scripts/install.sh)

Manual build

Warning

You need at least one supported coding agent installed and authorized. See the supported agents list below.

# Prerequisites: Bun >=1.3.9, Node >=24.13.1
git clone https://github.com/aaditagrawal/t3code.git
cd t3code
bun install
bun run dev

Supported agents

Notes

  • This project is very early in development. Expect bugs.
  • Interested in contributing? See CONTRIBUTING.md.
  • Special thanks to Pingdotgg for the original project and aaditagrawal for the foundational fork.

About

Resources

Contributing

Stars

25 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

4,482 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

T3 Code

T3 Code is a minimal web GUI for coding agents made by Pingdotgg. This project is a downstream fork of the original T3 Code, maintained in aaditagrawal/t3code.

This fork focuses on expanding provider support, keeping usage and limit monitoring visible, improving persistence layers, and refining provider management across the app. The current branded release is T3 Code v0.0.36 — ACP Edition.

It supports configurable stdio ACP agents, Codex, Claude Code, Cursor, Droid, Fx, Grok Build, OpenCode, Amp, Copilot, Gemini CLI, Hermes Agent, Kilo, Oh My Pi, and Pi.

(NOTE: Amp /mode free is not supported, as Amp Code doesn't support it in headless mode - since they need to show ads for that business model to work.)

Why this fork?

This fork aims to provide a more robust and feature-rich multi-provider experience, with improved server management, visible usage/rate-limit monitoring, more reliable persistence of orchestration events, and UI refinements for settings and model selection.

The protected fork features are multi-provider runtime support, usage and limit monitoring, provider management UX, and provider-neutral orchestration reliability. Upstream syncs should preserve those unless a change explicitly replaces them with equivalent or better behavior.

Multi-provider support (Enhanced)

Adds full provider adapters (server managers, service layers, runtime layers) for agents that are not yet on the upstream roadmap:

ProviderWhat's included
Codex CLIApp-server JSON-RPC support with usage/rate-limit monitoring
Claude CodeFull adapter with permission mode, thinking token limits, and SDK typings
CursorTypeScript SDK adapter + SDK model discovery + usage-dashboard tracking
DroidFactory Droid SDK runtime integration
FxACP integration through fx acp
Grok BuildACP adapter with xAI protocol extensions
OpenCodeAdapter with hostname/port/workspace config
AmpAdapter + ampServerManager for headless Amp sessions
GitHub CopilotAdapter + CLI binary resolution + text generation layer
Gemini CLIEnhanced: Adapter + geminiCliServerManager with full test coverage
KiloAdapter + kiloServerManager + OpenCode-style server URL config
Hermes AgentACP chats plus an optional companion for Home, cron, handoffs, and media
Oh My PiACP integration through the built-in omp acp mode
PiACP integration through pi-acp, with shared model and session handling
ACP AgentConfigurable executable and argument list for any stdio ACP implementation

Hermes uses hermes-acp for ordinary interactive conversations. Its optional T3 companion plugin adds enrollment, proactive Home and cron delivery, handoffs, and media without replacing the standard ACP path. Oh My Pi runs its native ACP server through omp acp, while Pi stays on the shared transport through pi-acp.

Configurable ACP agents

In Settings → Providers, add an ACP Agent instance, enter its executable, and put one command argument on each line. Credentials and model configuration stay agent-owned; instance environment variables are inherited by the ACP process. This keeps T3 on the standard protocol instead of adding a transport fork for every compatible agent.

Real OpenRouter turns using dots-studio/dots-3-note-preview:free are covered by the live ACP harness for:

AgentExecutableArguments, one per line
Goosegooseacp
OpenCodeopencodeacp
Qwen Codeqwen--acp
--experimental-skills
fast-agentfast-agent-acpConfigure the model with its CLI or config
Docker Agentdocker-agentserve
acp
/path/to/agent.yaml

Hermes, Oh My Pi, and Pi remain available as branded presets because Hermes has companion capabilities and the two Pi-family agents have distinct install and launch paths. For Pi models whose OpenRouter metadata advertises maximum output equal to the entire context window, install the T3 Pi compatibility extension. It omits the unsafe request field rather than imposing a replacement token cap.

Kimi CLI and Cline can launch over ACP, but their current ACP servers require their own account authentication before session/new, even when an OpenRouter key and custom model are configured. They can still be added through ACP Agent after completing that vendor login, but OpenRouter alone is not sufficient in the versions tested.

Persistence & Orchestration Improvements

  • Normalized Provider Kinds: Migration added to handle legacy provider kind naming consistently.
  • Improved Event Store: Robust persistence layer for orchestration events with better error handling.
  • Session Management: refined ProviderSessionDirectory for better tracking of active sessions.

UX enhancements

FeatureDescription
Settings pageDedicated route (/settings) for theme, accent color, and custom model slug configuration
Accent color systemPreset palette with contrast-safe terminal color injection across the entire UI
Theme supportLight / dark / system modes with transition suppression
Command paletteCmd+K / Ctrl+K palette for quick actions, script running, and thread navigation
Sidebar searchNormalized thread title search with instant filtering
Plan sidebarDedicated panel for reviewing, downloading, or saving proposed agent plans
Terminal drawerTheme-aware integrated terminal with accent color styling
Usage monitoringContext window meter, token usage events, and account rate-limit banner/panel visibility

Getting started

Quick install (recommended)

Run the interactive installer — it detects your OS, checks prerequisites (git, Node.js ≥ 24, bun ≥ 1.3.9), installs missing tools, and lets you choose between development/production and desktop/web builds:

# macOS / Linux / WSL
bash <(curl -fsSL https://raw.githubusercontent.com/aaditagrawal/t3code/main/scripts/install.sh)
# Windows (Git Bash, MSYS2, or WSL)
bash <(curl -fsSL https://raw.githubusercontent.com/aaditagrawal/t3code/main/scripts/install.sh)

Manual build

Warning

You need at least one supported coding agent installed and authorized. See the supported agents list below.

# Prerequisites: Bun >=1.3.9, Node >=24.13.1
git clone https://github.com/aaditagrawal/t3code.git
cd t3code
bun install
bun run dev

Supported agents

Notes

  • This project is very early in development. Expect bugs.
  • Interested in contributing? See CONTRIBUTING.md.
  • Special thanks to Pingdotgg for the original project and aaditagrawal for the foundational fork.

About

Resources

Contributing

Stars

25 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

4,482 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

T3 Code

T3 Code is a minimal web GUI for coding agents made by Pingdotgg. This project is a downstream fork of the original T3 Code, maintained in aaditagrawal/t3code.

This fork focuses on expanding provider support, keeping usage and limit monitoring visible, improving persistence layers, and refining provider management across the app. The current branded release is T3 Code v0.0.36 — ACP Edition.

It supports configurable stdio ACP agents, Codex, Claude Code, Cursor, Droid, Fx, Grok Build, OpenCode, Amp, Copilot, Gemini CLI, Hermes Agent, Kilo, Oh My Pi, and Pi.

(NOTE: Amp /mode free is not supported, as Amp Code doesn't support it in headless mode - since they need to show ads for that business model to work.)

Why this fork?

This fork aims to provide a more robust and feature-rich multi-provider experience, with improved server management, visible usage/rate-limit monitoring, more reliable persistence of orchestration events, and UI refinements for settings and model selection.

The protected fork features are multi-provider runtime support, usage and limit monitoring, provider management UX, and provider-neutral orchestration reliability. Upstream syncs should preserve those unless a change explicitly replaces them with equivalent or better behavior.

Multi-provider support (Enhanced)

Adds full provider adapters (server managers, service layers, runtime layers) for agents that are not yet on the upstream roadmap:

ProviderWhat's included
Codex CLIApp-server JSON-RPC support with usage/rate-limit monitoring
Claude CodeFull adapter with permission mode, thinking token limits, and SDK typings
CursorTypeScript SDK adapter + SDK model discovery + usage-dashboard tracking
DroidFactory Droid SDK runtime integration
FxACP integration through fx acp
Grok BuildACP adapter with xAI protocol extensions
OpenCodeAdapter with hostname/port/workspace config
AmpAdapter + ampServerManager for headless Amp sessions
GitHub CopilotAdapter + CLI binary resolution + text generation layer
Gemini CLIEnhanced: Adapter + geminiCliServerManager with full test coverage
KiloAdapter + kiloServerManager + OpenCode-style server URL config
Hermes AgentACP chats plus an optional companion for Home, cron, handoffs, and media
Oh My PiACP integration through the built-in omp acp mode
PiACP integration through pi-acp, with shared model and session handling
ACP AgentConfigurable executable and argument list for any stdio ACP implementation

Hermes uses hermes-acp for ordinary interactive conversations. Its optional T3 companion plugin adds enrollment, proactive Home and cron delivery, handoffs, and media without replacing the standard ACP path. Oh My Pi runs its native ACP server through omp acp, while Pi stays on the shared transport through pi-acp.

Configurable ACP agents

In Settings → Providers, add an ACP Agent instance, enter its executable, and put one command argument on each line. Credentials and model configuration stay agent-owned; instance environment variables are inherited by the ACP process. This keeps T3 on the standard protocol instead of adding a transport fork for every compatible agent.

Real OpenRouter turns using dots-studio/dots-3-note-preview:free are covered by the live ACP harness for:

AgentExecutableArguments, one per line
Goosegooseacp
OpenCodeopencodeacp
Qwen Codeqwen--acp
--experimental-skills
fast-agentfast-agent-acpConfigure the model with its CLI or config
Docker Agentdocker-agentserve
acp
/path/to/agent.yaml

Hermes, Oh My Pi, and Pi remain available as branded presets because Hermes has companion capabilities and the two Pi-family agents have distinct install and launch paths. For Pi models whose OpenRouter metadata advertises maximum output equal to the entire context window, install the T3 Pi compatibility extension. It omits the unsafe request field rather than imposing a replacement token cap.

Kimi CLI and Cline can launch over ACP, but their current ACP servers require their own account authentication before session/new, even when an OpenRouter key and custom model are configured. They can still be added through ACP Agent after completing that vendor login, but OpenRouter alone is not sufficient in the versions tested.

Persistence & Orchestration Improvements

  • Normalized Provider Kinds: Migration added to handle legacy provider kind naming consistently.
  • Improved Event Store: Robust persistence layer for orchestration events with better error handling.
  • Session Management: refined ProviderSessionDirectory for better tracking of active sessions.

UX enhancements

FeatureDescription
Settings pageDedicated route (/settings) for theme, accent color, and custom model slug configuration
Accent color systemPreset palette with contrast-safe terminal color injection across the entire UI
Theme supportLight / dark / system modes with transition suppression
Command paletteCmd+K / Ctrl+K palette for quick actions, script running, and thread navigation
Sidebar searchNormalized thread title search with instant filtering
Plan sidebarDedicated panel for reviewing, downloading, or saving proposed agent plans
Terminal drawerTheme-aware integrated terminal with accent color styling
Usage monitoringContext window meter, token usage events, and account rate-limit banner/panel visibility

Getting started

Quick install (recommended)

Run the interactive installer — it detects your OS, checks prerequisites (git, Node.js ≥ 24, bun ≥ 1.3.9), installs missing tools, and lets you choose between development/production and desktop/web builds:

# macOS / Linux / WSL
bash <(curl -fsSL https://raw.githubusercontent.com/aaditagrawal/t3code/main/scripts/install.sh)
# Windows (Git Bash, MSYS2, or WSL)
bash <(curl -fsSL https://raw.githubusercontent.com/aaditagrawal/t3code/main/scripts/install.sh)

Manual build

Warning

You need at least one supported coding agent installed and authorized. See the supported agents list below.

# Prerequisites: Bun >=1.3.9, Node >=24.13.1
git clone https://github.com/aaditagrawal/t3code.git
cd t3code
bun install
bun run dev

Supported agents

Notes

  • This project is very early in development. Expect bugs.
  • Interested in contributing? See CONTRIBUTING.md.
  • Special thanks to Pingdotgg for the original project and aaditagrawal for the foundational fork.

About

Resources

Contributing

Stars

25 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages