# vercel-labs/scriptc

TypeScript-to-Native Compiler

Repository: https://github.com/vercel-labs/scriptc
Canonical: https://ross.abutalabs.com/products/scriptc
Homepage: https://scriptc.dev
Language: TypeScript
License: Apache-2.0
License Family: permissive
Last push: 2026-08-26T22:29:01+00:00

## Health v2 (maintenance only)
Score: 80/100 (v2, computed 2026-09-03T02:20:16.233290+00:00)
- activity 99, release rhythm 99, longevity 3
- inputs: {"age_days": 42, "days_push": 7, "days_rel": 11, "gap_med": 0, "n_releases_24m": 34}
- flags: young
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 4613, forks 110 (observed 2026-08-28T04:08:54.926256+00:00)

## What it is
scriptc is a TypeScript-to-native compiler that compiles ordinary TypeScript and JavaScript into small, fast, self-contained native executables, typed IR, C, LLVM IR, or WebAssembly (WASI) modules, with no Node or JavaScript engine in the binary. It uses the real TypeScript compiler for type checking, reports which constructs compile statically versus dynamically (opt-in embedded quickjs-ng), and rejects unsupported code with explicit diagnostics.

## Use cases
- compile typescript to a native binary
- build standalone executables from typescript without node
- emit c or llvm ir from typescript source
- compile typescript to webassembly with wasi
- make small fast cli tools in typescript
- check how much of my typescript can compile statically
- ship a typescript app without bundling node or v8

## When to choose
- you want small (~320KB), fast-starting native binaries from ordinary TypeScript with no code changes
- you need source-level artifacts like C or LLVM IR from TypeScript
- you want explicit diagnostics instead of silently dynamic behavior, with an opt-in embedded JS engine for npm dependencies
- you target macOS, Linux, Windows, or WASI Preview 1

## When to avoid
- you need full Node.js or npm ecosystem compatibility, including dynamic require and any-typed code without an embedded engine
- you rely on exact Node runtime semantics such as sparse arrays returning undefined
- you need a battle-tested production compiler — the project is explicitly experimental
- you only want to run TypeScript scripts inside Node rather than produce native binaries

## Facets
- artifact type: cli-tool
- maturity: experimental
- function: compiler, build-tool, cli, wasm, developer-tools
- domain: compilers, programming-languages, developer-tools
- platform: windows, cli, wasm, cross-platform
- tags: typescript, native-executables, llvm, wasi, aot-compilation, quickjs, clang, static-compilation, command-line, macos, linux, nodejs

## Member repositories
- vercel-labs/scriptc (main) score 80

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:08:54.926256+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-29T18:19:42.049272+00:00, confidence not recorded.
  - readme: https://github.com/vercel-labs/scriptc (fetched 2026-08-28T04:08:54.926256+00:00, sha 35898023b3c7)
  - homepage: https://scriptc.dev (fetched 2026-08-29T09:04:44.434677+00:00, sha 3aec54eb8031)
  - site_page: https://scriptc.dev/quickstart (fetched 2026-08-29T09:04:44.446007+00:00, sha 7850059f7474)
  - registry_npm: https://registry.npmjs.org/scriptc (fetched 2026-08-29T09:04:44.448581+00:00, sha 95c3d3343778)
  - site_page: https://scriptc.dev/introduction (fetched 2026-08-29T09:04:44.443873+00:00, sha a0c14e2b21f0)
- Data as of 2026-08-30T08:39:29.467469+00:00.
