TypeScript-Go toolchain
ttsc
Build with TypeScript-Go. Run scripts only after they type-check. Report lint rules, unmet requirements, and plugin findings in the one diagnostic stream your CI already gates on.
10x
faster type checks
TypeScript-Go checks natively, in parallel. JavaScript tsc does neither.
800x
faster lint loop
Rules reuse the AST and types the compiler already built. ESLint parses it all again.
100%
requirement coverage
Every configured requirement is acknowledged by name, or the build stops. Counted per obligation, never pooled.
90%
fewer agent tokens
Agents read one compiler-resolved graph over MCP instead of crawling source files.
compiler pathttscbuild / check / watch
ttsxchecked script runner
@ttsc/lintrules as compiler diagnostics
@ttsc/evidencerequirements as compiler diagnostics
@ttsc/graphcode graph for coding agents, over MCP
pluginsAST + Checker before emit
src/index.ts:3:7 - error TS2322
Type errors and lint rules land in the same diagnostic stream.
[Toolchain]
One compiler path, not a pile of wrappers.
Keep the existing tsconfig.json. The same project graph feeds the CLI, runner, linter, editor, bundlers, and plugins.
01
read tsconfig
02
type-check
03
run plugins
04
emit, execute, or report
ttscCompiler
Build, check, watch, emit, and run source transforms on top of TypeScript-Go.
build / check / watch
ttsxRunner
Execute a TypeScript entrypoint only after the owning project passes type-check.
typed tsx-style scripts
@ttsc/lintLint and format
Report rules as TS diagnostics, apply autofixes, and format through the same compiler pass.
fix / format / TSxxxxx
@ttsc/evidenceRequirement coverage
Make every configured requirement demand a named acknowledgement from the code, test, or document that satisfies it.
spec as compile error
@ttsc/graphCoding agents
Hand a coding agent a checker-resolved graph of your codebase over MCP, so it stops grepping and re-reading files.
code knowledge graph
pluginsCompiler-powered libraries
Run transforms and checks on the types the checker already resolved, on every build and every ttsx run.
typia / nestia / your own
[Diagnostics]
Type errors and lint errors should look like one failure.
ttsc can print rule violations as TS diagnostics. Local runs, CI, and the editor all point at the same file, line, and rule.
type errors
lint violations
format fixes
editor underlines
src/index.ts:3:7 - error TS2322: Type 'number' is not assignable to type 'string'.src/index.ts:2:5 - error TS17397: [prefer-const] Use const instead of let.src/index.ts:1:1 - error TS11966: [no-var] Unexpected var, use let or const instead.1 var x: number = 3; ~~~~~~~~~~~~~~~~~~2 let y: number = 4; ~~~~~~~~~~~~~3 const z: string = 5; ~45 console.log(x + y + z);Found 3 errors in the same file.
[Requirement coverage]
Your spec, as a compile error no agent can skip.
@ttsc/evidence fails the build once per obligation, because one reference never covers another. @evidence <target> <reason> closes one, by naming a unit of the spec and why this declaration answers for it.
An AI coding agent has to clear those errors to finish. Coverage reaches 100% on its own, as the residue of the ones it closed.
/*** @evidence docs/discount.md#coupon-stacking <reason...>* @evidence POST:/orders/{orderId}/coupons <reason...>* @evidence {@link hooks.useCouponStacking} <reason...>*/export function CouponStackingNotice(props: IProps)
error TS16411: [evidence/graph] Missing acknowledgement for'docs/discount.md#coupon-stacking'error TS16411: [evidence/graph] Missing acknowledgement for'POST:/orders/{orderId}/coupons'error TS16411: [evidence/graph] Missing acknowledgement for'useCouponStacking'Found 3 errors.
codex gpt-5.6-luna, four subjects. Thirteen edges and token spend: full benchmark.
[Coding agents]
Your agent should ask the compiler, not grep.
@ttsc/graph hands a coding agent a checker-resolved graph of your project, over MCP. On the agent-cost benchmark, Claude agents answer reading zero files, cutting tokens by roughly 90%.
{"mcpServers": {"ttsc-graph": {"command": "npx","args": ["-y", "@ttsc/graph"]}}}
GPT-5.6 Sol, shared onboarding question. Every model and repository: full benchmark.
[Plugins]
Plugins get the compiler's eyes.
A plugin is not a string replacement pass. It runs beside the TypeScript-Go AST and Checker, then reports diagnostics or rewrites source before JavaScript is emitted.
Explore plugins[Playground]
Try the compiler path in the browser.
The playground boots the WebAssembly build of ttsc in a worker. Your source stays in the tab while you test diagnostics, transforms, and emitted output.
globalThis.ttsc.build()
Same engine shape as the CLI, packaged for in-tab demos and plugin playgrounds.
[Sponsors]
Built with help from people who keep the work moving.
Sponsor support funds the quiet work behind ttsc: TypeScript-Go upgrades, platform binaries, plugin compatibility, documentation, and the playground.
Thank you for your support