Repository files navigation

Teya Code Station

Latest releaseWebsiteContributingLicence

Teya Code Station is a macOS app for running Codex and Claude Code across local projects. It keeps conversations, files, Git changes, and terminals in one window while each coding agent continues to use its own CLI and account.

Teya Code Station showing a project and its coding-agent session

Why Code Station

  • Run agents side by side. Choose Codex or Claude Code for each session, then run independent sessions in their own Git worktrees without having them edit the same checkout.
  • Work across repositories. Group related projects into a reusable workspace with one lead working directory and attach the others to the same conversation.
  • Come back caught up. Ask for a short session recap at any time, or create one automatically when a turn finishes while you are elsewhere. Recaps stay outside the conversation, so they do not add noise to the agent's context.
  • Stay close to the work. Review and commit changes, browse files, use a terminal, manage MCP servers and skills, send HTTP requests, inspect Docker, run shortcuts, and start guided troubleshooting without leaving the app.

Code Station showing a concise recap above a completed coding-agent session

The project website has the complete feature overview and more product screenshots.

Download and install

Download the signed and notarized app from the latest GitHub release. Open the .dmg, drag Teya Code Station to Applications, then launch it from there.

You need macOS 14 or later and at least one supported coding agent installed and signed in: codex or claude.

Build from source

You need:

  • macOS 14 or later
  • Xcode 16 or another Swift 6 toolchain
  • Git
  • At least one supported coding agent installed and signed in: codex or claude

Clone the repository and create a double-clickable app bundle:

git clone https://github.com/teya-engineering/code-station.git
cd code-station
./build-app.sh
open "build/Teya Code Station.app"

The build script creates an ad-hoc signed release bundle at build/Teya Code Station.app. You can move it to /Applications for normal use. The app bundle is required for the Start at Login setting.

For a quick development run without creating an app bundle:

swift run --disable-sandbox

Team configuration

Code Station can optionally load a site configuration with the environments, API access, MCP presets, skills marketplace, starter requests, and shortcuts that belong to your organisation. Every section is optional, and the rest of the app works without a configuration file.

Teya users can import github.com/saltpay/code-station-settings during first-launch setup. To create a configuration for another organisation, start with site-defaults.example.json.

See the site configuration guide for import options, lookup rules, build integration, and the field reference.

Development

See CONTRIBUTING.md for development setup, tests, architecture, and project conventions.

Releases

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

Repository files navigation

Teya Code Station

Latest releaseWebsiteContributingLicence

Teya Code Station is a macOS app for running Codex and Claude Code across local projects. It keeps conversations, files, Git changes, and terminals in one window while each coding agent continues to use its own CLI and account.

Teya Code Station showing a project and its coding-agent session

Why Code Station

  • Run agents side by side. Choose Codex or Claude Code for each session, then run independent sessions in their own Git worktrees without having them edit the same checkout.
  • Work across repositories. Group related projects into a reusable workspace with one lead working directory and attach the others to the same conversation.
  • Come back caught up. Ask for a short session recap at any time, or create one automatically when a turn finishes while you are elsewhere. Recaps stay outside the conversation, so they do not add noise to the agent's context.
  • Stay close to the work. Review and commit changes, browse files, use a terminal, manage MCP servers and skills, send HTTP requests, inspect Docker, run shortcuts, and start guided troubleshooting without leaving the app.

Code Station showing a concise recap above a completed coding-agent session

The project website has the complete feature overview and more product screenshots.

Download and install

Download the signed and notarized app from the latest GitHub release. Open the .dmg, drag Teya Code Station to Applications, then launch it from there.

You need macOS 14 or later and at least one supported coding agent installed and signed in: codex or claude.

Build from source

You need:

  • macOS 14 or later
  • Xcode 16 or another Swift 6 toolchain
  • Git
  • At least one supported coding agent installed and signed in: codex or claude

Clone the repository and create a double-clickable app bundle:

git clone https://github.com/teya-engineering/code-station.git
cd code-station
./build-app.sh
open "build/Teya Code Station.app"

The build script creates an ad-hoc signed release bundle at build/Teya Code Station.app. You can move it to /Applications for normal use. The app bundle is required for the Start at Login setting.

For a quick development run without creating an app bundle:

swift run --disable-sandbox

Team configuration

Code Station can optionally load a site configuration with the environments, API access, MCP presets, skills marketplace, starter requests, and shortcuts that belong to your organisation. Every section is optional, and the rest of the app works without a configuration file.

Teya users can import github.com/saltpay/code-station-settings during first-launch setup. To create a configuration for another organisation, start with site-defaults.example.json.

See the site configuration guide for import options, lookup rules, build integration, and the field reference.

Development

See CONTRIBUTING.md for development setup, tests, architecture, and project conventions.

Releases

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

Repository files navigation

Teya Code Station

Latest releaseWebsiteContributingLicence

Teya Code Station is a macOS app for running Codex and Claude Code across local projects. It keeps conversations, files, Git changes, and terminals in one window while each coding agent continues to use its own CLI and account.

Teya Code Station showing a project and its coding-agent session

Why Code Station

  • Run agents side by side. Choose Codex or Claude Code for each session, then run independent sessions in their own Git worktrees without having them edit the same checkout.
  • Work across repositories. Group related projects into a reusable workspace with one lead working directory and attach the others to the same conversation.
  • Come back caught up. Ask for a short session recap at any time, or create one automatically when a turn finishes while you are elsewhere. Recaps stay outside the conversation, so they do not add noise to the agent's context.
  • Stay close to the work. Review and commit changes, browse files, use a terminal, manage MCP servers and skills, send HTTP requests, inspect Docker, run shortcuts, and start guided troubleshooting without leaving the app.

Code Station showing a concise recap above a completed coding-agent session

The project website has the complete feature overview and more product screenshots.

Download and install

Download the signed and notarized app from the latest GitHub release. Open the .dmg, drag Teya Code Station to Applications, then launch it from there.

You need macOS 14 or later and at least one supported coding agent installed and signed in: codex or claude.

Build from source

You need:

  • macOS 14 or later
  • Xcode 16 or another Swift 6 toolchain
  • Git
  • At least one supported coding agent installed and signed in: codex or claude

Clone the repository and create a double-clickable app bundle:

git clone https://github.com/teya-engineering/code-station.git
cd code-station
./build-app.sh
open "build/Teya Code Station.app"

The build script creates an ad-hoc signed release bundle at build/Teya Code Station.app. You can move it to /Applications for normal use. The app bundle is required for the Start at Login setting.

For a quick development run without creating an app bundle:

swift run --disable-sandbox

Team configuration

Code Station can optionally load a site configuration with the environments, API access, MCP presets, skills marketplace, starter requests, and shortcuts that belong to your organisation. Every section is optional, and the rest of the app works without a configuration file.

Teya users can import github.com/saltpay/code-station-settings during first-launch setup. To create a configuration for another organisation, start with site-defaults.example.json.

See the site configuration guide for import options, lookup rules, build integration, and the field reference.

Development

See CONTRIBUTING.md for development setup, tests, architecture, and project conventions.

Releases

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

Repository files navigation

Teya Code Station

Latest releaseWebsiteContributingLicence

Teya Code Station is a macOS app for running Codex and Claude Code across local projects. It keeps conversations, files, Git changes, and terminals in one window while each coding agent continues to use its own CLI and account.

Teya Code Station showing a project and its coding-agent session

Why Code Station

  • Run agents side by side. Choose Codex or Claude Code for each session, then run independent sessions in their own Git worktrees without having them edit the same checkout.
  • Work across repositories. Group related projects into a reusable workspace with one lead working directory and attach the others to the same conversation.
  • Come back caught up. Ask for a short session recap at any time, or create one automatically when a turn finishes while you are elsewhere. Recaps stay outside the conversation, so they do not add noise to the agent's context.
  • Stay close to the work. Review and commit changes, browse files, use a terminal, manage MCP servers and skills, send HTTP requests, inspect Docker, run shortcuts, and start guided troubleshooting without leaving the app.

Code Station showing a concise recap above a completed coding-agent session

The project website has the complete feature overview and more product screenshots.

Download and install

Download the signed and notarized app from the latest GitHub release. Open the .dmg, drag Teya Code Station to Applications, then launch it from there.

You need macOS 14 or later and at least one supported coding agent installed and signed in: codex or claude.

Build from source

You need:

  • macOS 14 or later
  • Xcode 16 or another Swift 6 toolchain
  • Git
  • At least one supported coding agent installed and signed in: codex or claude

Clone the repository and create a double-clickable app bundle:

git clone https://github.com/teya-engineering/code-station.git
cd code-station
./build-app.sh
open "build/Teya Code Station.app"

The build script creates an ad-hoc signed release bundle at build/Teya Code Station.app. You can move it to /Applications for normal use. The app bundle is required for the Start at Login setting.

For a quick development run without creating an app bundle:

swift run --disable-sandbox

Team configuration

Code Station can optionally load a site configuration with the environments, API access, MCP presets, skills marketplace, starter requests, and shortcuts that belong to your organisation. Every section is optional, and the rest of the app works without a configuration file.

Teya users can import github.com/saltpay/code-station-settings during first-launch setup. To create a configuration for another organisation, start with site-defaults.example.json.

See the site configuration guide for import options, lookup rules, build integration, and the field reference.

Development

See CONTRIBUTING.md for development setup, tests, architecture, and project conventions.

Releases

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

Repository files navigation

Teya Code Station

Latest releaseWebsiteContributingLicence

Teya Code Station is a macOS app for running Codex and Claude Code across local projects. It keeps conversations, files, Git changes, and terminals in one window while each coding agent continues to use its own CLI and account.

Teya Code Station showing a project and its coding-agent session

Why Code Station

  • Run agents side by side. Choose Codex or Claude Code for each session, then run independent sessions in their own Git worktrees without having them edit the same checkout.
  • Work across repositories. Group related projects into a reusable workspace with one lead working directory and attach the others to the same conversation.
  • Come back caught up. Ask for a short session recap at any time, or create one automatically when a turn finishes while you are elsewhere. Recaps stay outside the conversation, so they do not add noise to the agent's context.
  • Stay close to the work. Review and commit changes, browse files, use a terminal, manage MCP servers and skills, send HTTP requests, inspect Docker, run shortcuts, and start guided troubleshooting without leaving the app.

Code Station showing a concise recap above a completed coding-agent session

The project website has the complete feature overview and more product screenshots.

Download and install

Download the signed and notarized app from the latest GitHub release. Open the .dmg, drag Teya Code Station to Applications, then launch it from there.

You need macOS 14 or later and at least one supported coding agent installed and signed in: codex or claude.

Build from source

You need:

  • macOS 14 or later
  • Xcode 16 or another Swift 6 toolchain
  • Git
  • At least one supported coding agent installed and signed in: codex or claude

Clone the repository and create a double-clickable app bundle:

git clone https://github.com/teya-engineering/code-station.git
cd code-station
./build-app.sh
open "build/Teya Code Station.app"

The build script creates an ad-hoc signed release bundle at build/Teya Code Station.app. You can move it to /Applications for normal use. The app bundle is required for the Start at Login setting.

For a quick development run without creating an app bundle:

swift run --disable-sandbox

Team configuration

Code Station can optionally load a site configuration with the environments, API access, MCP presets, skills marketplace, starter requests, and shortcuts that belong to your organisation. Every section is optional, and the rest of the app works without a configuration file.

Teya users can import github.com/saltpay/code-station-settings during first-launch setup. To create a configuration for another organisation, start with site-defaults.example.json.

See the site configuration guide for import options, lookup rules, build integration, and the field reference.

Development

See CONTRIBUTING.md for development setup, tests, architecture, and project conventions.

Releases

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

Repository files navigation

Teya Code Station

Latest releaseWebsiteContributingLicence

Teya Code Station is a macOS app for running Codex and Claude Code across local projects. It keeps conversations, files, Git changes, and terminals in one window while each coding agent continues to use its own CLI and account.

Teya Code Station showing a project and its coding-agent session

Why Code Station

  • Run agents side by side. Choose Codex or Claude Code for each session, then run independent sessions in their own Git worktrees without having them edit the same checkout.
  • Work across repositories. Group related projects into a reusable workspace with one lead working directory and attach the others to the same conversation.
  • Come back caught up. Ask for a short session recap at any time, or create one automatically when a turn finishes while you are elsewhere. Recaps stay outside the conversation, so they do not add noise to the agent's context.
  • Stay close to the work. Review and commit changes, browse files, use a terminal, manage MCP servers and skills, send HTTP requests, inspect Docker, run shortcuts, and start guided troubleshooting without leaving the app.

Code Station showing a concise recap above a completed coding-agent session

The project website has the complete feature overview and more product screenshots.

Download and install

Download the signed and notarized app from the latest GitHub release. Open the .dmg, drag Teya Code Station to Applications, then launch it from there.

You need macOS 14 or later and at least one supported coding agent installed and signed in: codex or claude.

Build from source

You need:

  • macOS 14 or later
  • Xcode 16 or another Swift 6 toolchain
  • Git
  • At least one supported coding agent installed and signed in: codex or claude

Clone the repository and create a double-clickable app bundle:

git clone https://github.com/teya-engineering/code-station.git
cd code-station
./build-app.sh
open "build/Teya Code Station.app"

The build script creates an ad-hoc signed release bundle at build/Teya Code Station.app. You can move it to /Applications for normal use. The app bundle is required for the Start at Login setting.

For a quick development run without creating an app bundle:

swift run --disable-sandbox

Team configuration

Code Station can optionally load a site configuration with the environments, API access, MCP presets, skills marketplace, starter requests, and shortcuts that belong to your organisation. Every section is optional, and the rest of the app works without a configuration file.

Teya users can import github.com/saltpay/code-station-settings during first-launch setup. To create a configuration for another organisation, start with site-defaults.example.json.

See the site configuration guide for import options, lookup rules, build integration, and the field reference.

Development

See CONTRIBUTING.md for development setup, tests, architecture, and project conventions.

Releases

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

Repository files navigation

Teya Code Station

Latest releaseWebsiteContributingLicence

Teya Code Station is a macOS app for running Codex and Claude Code across local projects. It keeps conversations, files, Git changes, and terminals in one window while each coding agent continues to use its own CLI and account.

Teya Code Station showing a project and its coding-agent session

Why Code Station

  • Run agents side by side. Choose Codex or Claude Code for each session, then run independent sessions in their own Git worktrees without having them edit the same checkout.
  • Work across repositories. Group related projects into a reusable workspace with one lead working directory and attach the others to the same conversation.
  • Come back caught up. Ask for a short session recap at any time, or create one automatically when a turn finishes while you are elsewhere. Recaps stay outside the conversation, so they do not add noise to the agent's context.
  • Stay close to the work. Review and commit changes, browse files, use a terminal, manage MCP servers and skills, send HTTP requests, inspect Docker, run shortcuts, and start guided troubleshooting without leaving the app.

Code Station showing a concise recap above a completed coding-agent session

The project website has the complete feature overview and more product screenshots.

Download and install

Download the signed and notarized app from the latest GitHub release. Open the .dmg, drag Teya Code Station to Applications, then launch it from there.

You need macOS 14 or later and at least one supported coding agent installed and signed in: codex or claude.

Build from source

You need:

  • macOS 14 or later
  • Xcode 16 or another Swift 6 toolchain
  • Git
  • At least one supported coding agent installed and signed in: codex or claude

Clone the repository and create a double-clickable app bundle:

git clone https://github.com/teya-engineering/code-station.git
cd code-station
./build-app.sh
open "build/Teya Code Station.app"

The build script creates an ad-hoc signed release bundle at build/Teya Code Station.app. You can move it to /Applications for normal use. The app bundle is required for the Start at Login setting.

For a quick development run without creating an app bundle:

swift run --disable-sandbox

Team configuration

Code Station can optionally load a site configuration with the environments, API access, MCP presets, skills marketplace, starter requests, and shortcuts that belong to your organisation. Every section is optional, and the rest of the app works without a configuration file.

Teya users can import github.com/saltpay/code-station-settings during first-launch setup. To create a configuration for another organisation, start with site-defaults.example.json.

See the site configuration guide for import options, lookup rules, build integration, and the field reference.

Development

See CONTRIBUTING.md for development setup, tests, architecture, and project conventions.

Releases

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

Repository files navigation

Teya Code Station

Latest releaseWebsiteContributingLicence

Teya Code Station is a macOS app for running Codex and Claude Code across local projects. It keeps conversations, files, Git changes, and terminals in one window while each coding agent continues to use its own CLI and account.

Teya Code Station showing a project and its coding-agent session

Why Code Station

  • Run agents side by side. Choose Codex or Claude Code for each session, then run independent sessions in their own Git worktrees without having them edit the same checkout.
  • Work across repositories. Group related projects into a reusable workspace with one lead working directory and attach the others to the same conversation.
  • Come back caught up. Ask for a short session recap at any time, or create one automatically when a turn finishes while you are elsewhere. Recaps stay outside the conversation, so they do not add noise to the agent's context.
  • Stay close to the work. Review and commit changes, browse files, use a terminal, manage MCP servers and skills, send HTTP requests, inspect Docker, run shortcuts, and start guided troubleshooting without leaving the app.

Code Station showing a concise recap above a completed coding-agent session

The project website has the complete feature overview and more product screenshots.

Download and install

Download the signed and notarized app from the latest GitHub release. Open the .dmg, drag Teya Code Station to Applications, then launch it from there.

You need macOS 14 or later and at least one supported coding agent installed and signed in: codex or claude.

Build from source

You need:

  • macOS 14 or later
  • Xcode 16 or another Swift 6 toolchain
  • Git
  • At least one supported coding agent installed and signed in: codex or claude

Clone the repository and create a double-clickable app bundle:

git clone https://github.com/teya-engineering/code-station.git
cd code-station
./build-app.sh
open "build/Teya Code Station.app"

The build script creates an ad-hoc signed release bundle at build/Teya Code Station.app. You can move it to /Applications for normal use. The app bundle is required for the Start at Login setting.

For a quick development run without creating an app bundle:

swift run --disable-sandbox

Team configuration

Code Station can optionally load a site configuration with the environments, API access, MCP presets, skills marketplace, starter requests, and shortcuts that belong to your organisation. Every section is optional, and the rest of the app works without a configuration file.

Teya users can import github.com/saltpay/code-station-settings during first-launch setup. To create a configuration for another organisation, start with site-defaults.example.json.

See the site configuration guide for import options, lookup rules, build integration, and the field reference.

Development

See CONTRIBUTING.md for development setup, tests, architecture, and project conventions.

Releases

Contributors

Languages