Skip to content

Installation

The ts-pack CLI allows you to manage parsers and run code analysis directly from your terminal. You can use it in CI pipelines, automation scripts, or to explore and experiment with 371 supported languages.

Terminal window
brew tap xberg-io/homebrew-tap
brew install xberg-io/homebrew-tap/ts-pack
Verify
ts-pack --version
ts-pack list # language names, then a blank line and an "N language(s)" total

The CLI bundles an MCP server for AI agents:

Terminal window
ts-pack mcp

See the MCP Server guide for integration with Claude Code, Cursor, VS Code, and other tools.


Tree-sitter-language-pack is available for every major ecosystem. All packages share the same version and API surface.


Requires Python 3.10+.

Terminal window
pip install tree-sitter-language-pack

Verify:

language_count returns the number of languages available in the current build/cache

Python
from tree_sitter_language_pack import language_count
def main() -> None:
result = language_count()
print(result)
main()

Requires Node.js 18+. Pre-built binaries for Linux (x64, arm64), macOS (x64, arm64), and Windows (x64).

Terminal window
npm install @xberg-io/tree-sitter-language-pack

Verify:

language_count returns the number of languages available in the current build/cache

TypeScript
import { languageCount } from "@xberg-io/tree-sitter-language-pack";
function main() {
const result = languageCount();
console.log(result);
}
void main();

Requires Rust 1.85+.

Terminal window
cargo add tree-sitter-language-pack

Verify:

language_count returns the number of languages available in the current build/cache

Rust
use tree_sitter_language_pack::language_count;
fn main() {
let result = language_count();
println!("{:?}", result);
}

Requires Go 1.26+. The binding uses cgo and links against the pre-compiled C FFI library.

Terminal window
go get github.com/xberg-io/tree-sitter-language-pack/packages/go

Verify:

language_count returns the number of languages available in the current build/cache

Go
package main
import (
"fmt"
tspack "github.com/xberg-io/tree-sitter-language-pack/packages/go"
)
func main() {
result := tspack.LanguageCount()
fmt.Printf("%+v\n", result)
}

Requires JDK 25+ (uses Panama FFM API).

<dependency>
<groupId>io.xberg.treesitterlanguagepack</groupId>
<artifactId>tree-sitter-language-pack</artifactId>
<version>1.14.3</version>
</dependency>

Verify:

language_count returns the number of languages available in the current build/cache

Java
import io.xberg.treesitterlanguagepack.*;
public final class Example {
public static void main(String[] args) throws Exception {
var result = TreeSitterLanguagePack.languageCount();
System.out.println(result);
}
}

Requires .NET 10.

Terminal window
dotnet add package XbergIo.TreeSitterLanguagePack --version 1.14.3

Verify:

language_count returns the number of languages available in the current build/cache

C#
using System;
using TreeSitterLanguagePack;
var result = TreeSitterLanguagePackConverter.LanguageCount();
Console.WriteLine(result);

The NuGet package includes native runtime assets for Windows, Linux, and macOS.


Requires Ruby 3.2+.

Terminal window
gem install tree_sitter_language_pack

Verify:

language_count returns the number of languages available in the current build/cache

Ruby
require "tree_sitter_language_pack"
result = TreeSitterLanguagePack.language_count()
puts result.inspect

Requires Elixir 1.14+ and OTP 25+.

defp deps do
[
{:tree_sitter_language_pack, "~> 1.14"}
]
end
Terminal window
mix deps.get

Verify:

language_count returns the number of languages available in the current build/cache

Elixir
result = TreeSitterLanguagePack.language_count()
IO.inspect(result)

Requires PHP 8.2+. This package is a native PHP extension (type: php-ext). Install mlocati/php-extension-installer first so Composer can download and register the compiled .so/.dll:

Terminal window
composer require mlocati/php-extension-installer
Terminal window
composer require xberg-io/tree-sitter-language-pack

Verify:

language_count returns the number of languages available in the current build/cache

PHP
<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use Tree\Sitter\Language\Pack\TreeSitterLanguagePack;
$result = TreeSitterLanguagePack::languageCount();
var_dump($result);

Requires Dart 3.11+.

Terminal window
dart pub add tree_sitter_language_pack

Verify:

language_count returns the number of languages available in the current build/cache

Dart
import 'dart:io';
import 'package:tree_sitter_language_pack/tree_sitter_language_pack.dart';
import 'package:tree_sitter_language_pack/src/tree_sitter_language_pack_bridge_generated/frb_generated.dart' show RustLib;
Future<void> main() async {
await RustLib.init();
try {
final result = await TreeSitterLanguagePackBridge.languageCount();
stdout.writeln(result);
} finally {
RustLib.dispose();
}
}

Requires Android minSdk 21 and Java 17 bytecode.

implementation("io.xberg.tslp.android:tree-sitter-language-pack-android:1.14.3")

This is an Android AAR. Kotlin/JVM users should use the Java artifact.

Verify:

language_count returns the number of languages available in the current build/cache

Kotlin (Android)
import io.xberg.tslp.android.*
fun main() {
val result = TreeSitterLanguagePack.languageCount()
println(result)
}

Requires Swift 6.0+.

.package(
url: "https://github.com/xberg-io/tree-sitter-language-pack",
exact: "1.14.3"
)

Verify:

language_count returns the number of languages available in the current build/cache

Swift
import TreeSitterLanguagePack
let result = try TreeSitterLanguagePack.languageCount()
print(result)

Requires Zig 0.16+.

Terminal window
zig fetch --save <release tarball url>

The package name is tree_sitter_language_pack.

Verify:

language_count returns the number of languages available in the current build/cache

Zig
const std = @import("std");
const tree_sitter_language_pack = @import("tree_sitter_language_pack");
pub fn main() !void {
const result = tree_sitter_language_pack.language_count();
std.debug.print("{any}\n", .{result});
}

Download the shared library and generated C header from GitHub Releases. The C FFI is the stable native contract used by the generated native packages.


Use from any JavaScript environment — browsers, Deno, and Cloudflare Workers.

Terminal window
npm install @xberg-io/tree-sitter-language-pack-wasm

Verify:

language_count returns the number of languages available in the current build/cache

WebAssembly
import { languageCount } from "@xberg-io/tree-sitter-language-pack-wasm";
function main() {
const result = languageCount();
console.log(result);
}
void main();

The WASM package is a static curated subset of parsers compiled into the module. It does not expose the native download/cache helpers.