Skip to content

QUESTIONS & ANSWERS

Frequently asked.

Everything you need to know about packaging software into files that run anywhere.

What is Tebako?

Tebako is a packaging and loading ecosystem. It packages any payload — applications, data, fonts, native tools, runtimes themselves — into mountable images that stitch into single executables or install through registries you host. Ruby is the first runtime instance; the loader neither knows nor cares what language it starts.

Is it only for Ruby?

No — Ruby is simply first. The architecture is generic across four axes: any runtime, any platform, any payload, any composition. The runtime factories ship Ruby 3.1 through 4.0, CPython 3.11 through 3.14, JRuby, TruffleRuby, and OpenJDK today; julia follows the same shape.

What platforms does it support?

Seven platform triplets: aarch64 and x86_64 macOS, x86_64 and aarch64 Linux (gnu and musl), and x86_64 Windows (UCRT). Native-extension payloads press per triplet; pure-language payloads can ship as one universal image.

How does it work?

A package is up to three parts glued by a trailer at the end of the file: a small Rust loader, a runtime (the interpreter executable plus its environment image), and your payload images. At run time the images mount in-process through a virtual filesystem — they are never extracted — and the driver hands control to your entrypoint.

What does my user have to install?

Nothing but the package. A lean package resolves its runtime on first run: it downloads once into the machine-wide cache at ~/.tebako, sha256-verified, and every package on the machine shares it. A fat package carries the runtime inside and resolves nothing. Either way: download it and run it.

How big is a package?

The loader is size-gated under 3 MB per platform in CI. A lean package adds only your payload image on top of that — the runtime is shared per machine instead of duplicated inside every binary, so the per-app size stops carrying the world.

Can I package web apps like Rails or Sinatra?

Yes. Tebako packages any Ruby application, including web frameworks — the entire gem dependency tree, native extensions, and assets travel inside the payload image. Declarative jails control what host files the running app can see.

How is Tebako different from Docker?

Docker images need a daemon, a registry, and kernel namespaces. A tebako package is a file; the runtime is a directory in a cache; isolation is a user-space filesystem jail declared per run. No background service, no root, nothing left running.

Is it free and open source?

Yes. Tebako is open source under the BSD-2-Clause license, maintained by Ribose and the tamatebako organization on GitHub. Contributions are welcome.

What does the name mean?

Tebako (手箱) is short for tamatebako (玉手箱) — the legendary treasure box from the Japanese folktale of Urashima Tarō. Just as the box protected something precious, Tebako protects and carries your software. Read the full story on our About page.

Still have questions?

Open an issue on GitHub and the community will help.

Ask on GitHub