TexBench is a local chat + form interface for designing Tectonic workload specs,
editing them in a builder, and benchmarking them against multiple local database engines
with tectonic-cli.
The local assistant defaults to Ollama with the fixed llama3:8b tag. TexBench can technically
run on a CPU-only machine, but the assistant will be too slow for a good
interactive demo or day-to-day workflow. On CPU-only machines, expect slow
responses and frequent Ollama request timeouts.
Make sure these are available before the first run:
curltarmakepython3for Cassandra'scqlsh- internet access for first-time downloads
Ollama's current official macOS support starts at macOS 14+. See the official docs if you need platform-specific Ollama setup notes:
From the repo root, run:
makeThe first run may take a while. It bootstraps the local runtime, downloads the
configured models and matching tectonic-cli binary, installs or starts the local
services TexBench needs, then starts the app.
When it finishes, open:
Use Ctrl+C in the terminal to stop TexBench. If make started Cassandra,
Redis, or Ollama for this session, it will stop the session-managed processes on
exit.
In the browser, use the preset flow or the assistant to create a workload spec, review the generated structure in the builder, then run it against one of the supported local database targets.
The assistant model menu is populated exclusively from
config/llm-models.json. A model is selected for the entire assistant
conversation; clear the conversation before selecting another model.
Supported database targets in the UI:
rocksdbcassandrascyllaredisprintdb
For Cassandra and Redis runs, the default local targets are:
127.0.0.1:9042
127.0.0.1:6379
Benchmark artifacts are written under:
generated-workloads/latest-spec.jsongenerated-workloads/latest-benchmark-output.txtgenerated-workloads/runs/<run_id>/
make will:
- detect your OS and CPU automatically
- reuse a working local Node.js, Java, Ollama,
tectonic-cli, Cassandra, or Redis setup when it already satisfies the pinned requirements - otherwise bootstrap a repo-local Node.js runtime
- otherwise bootstrap a repo-local Java 17 runtime for Cassandra when a compatible Cassandra setup is not already available
- install npm dependencies
- install Ollama if it is missing
- install Cassandra
5.0.7if it is missing - install Redis with Homebrew on macOS or the detected Linux package manager if it is missing
- start Cassandra for the current app session if it is not already running and
functional on
127.0.0.1:9042 - verify Cassandra with
cqlsh - start Redis for the current app session if it is not already running and
functional on
127.0.0.1:6379 - verify Redis with
redis-cli PING - start Ollama for the current app session if it is not already running
- pull every model listed in
config/llm-models.json - verify that the default
llama3:8bmodel resolves to digest365c0bd3c000 - download the matching prebuilt
tectonic-clirelease asset for your platform - start the app on http://127.0.0.1:8787
The bootstrap path currently targets:
- macOS
arm64 - Linux
x86_64 - Linux
arm64
You can inspect the resolved platform and bootstrap asset selection with:
make bootstrap-infoThe default bootstrap path expects:
- a GPU-backed machine for practical local Ollama latency
curltarmakepython3forcqlsh- a C compiler and
pkg-configonly if Redis cannot be installed with Homebrew or the detected Linux package manager and the repo-local source-build fallback is needed - internet access for first-time downloads
make starts the app with:
AI_PROVIDER=ollamaOLLAMA_MODEL=llama3:8bOLLAMA_TIMEOUT_MS=300000AI_TIMEOUT_MS=300000TECTONIC_BIN=<repo-local prebuilt binary>- Cassandra pinned to
5.0.7on127.0.0.1:9042 - Redis on
127.0.0.1:6379
The app server entrypoint remains:
node src/server.mjsIf you want to run the app manually after bootstrapping tools yourself, that still works.
If you already have Node installed and want the traditional local dev flow:
npm install
npm run devnpm run dev starts Ollama, pulls and verifies every configured model, and
then launches TexBench with AI_PROVIDER=ollama. It intentionally leaves
Cassandra, Redis, and other benchmark services alone. Use make dev (or
make) for the full benchmark environment. The full setup reuses an existing
functional Cassandra instance even when its version differs from the managed
5.0.7 fallback. Use npm run dev:server to launch only the server with an
environment you manage yourself.
The repo-local bootstrap scripts live in scripts/bootstrap-lib.sh and scripts/run-local-dev.sh.
Run the full local test suite:
npm testRun the demo-oriented Ollama coverage:
make test-demoEnd users do not need a local Rust or Tectonic checkout. make downloads
platform-specific tectonic-cli release assets from this repo's GitHub
releases.
Asset naming convention:
tectonic-cli-v<version>-darwin-arm64.tar.gz
tectonic-cli-v<version>-darwin-x64.tar.gz
tectonic-cli-v<version>-linux-arm64.tar.gz
tectonic-cli-v<version>-linux-x64.tar.gz
To package the current platform locally:
make package-tectonicIf TECTONIC_SOURCE_DIR is not set, the packaging script clones a managed
Tectonic checkout into .bootstrap/src/Tectonic, fetches
SSD-Brandeis/Tectonic, and switches
it to branch no-marker-array.
To attempt the full platform matrix from macOS:
make package-tectonic-allThat target runs
scripts/package-tectonic-cli.sh, which builds
the Tectonic workspace with all currently available features enabled and then
packages the resulting tectonic-cli binary:
cargo build --release --all-featuresThe managed Tectonic branch currently requires nightly Rust, so the packaging
flow installs and uses the pinned BOOTSTRAP_TECTONIC_RUST_TOOLCHAIN value
nightly by default for both host and Docker builds.
For multi-platform packaging, the script maps the repo bootstrap platforms to Rust targets:
darwin-arm64->aarch64-apple-darwindarwin-x64->x86_64-apple-darwinlinux-arm64->aarch64-unknown-linux-gnulinux-x64->x86_64-unknown-linux-gnu
Packaging strategy:
- macOS targets build on the macOS host with target-specific SDK/linker flags.
- On macOS, the packaging script prefers
brew --prefix cassandra-cpp-driverforCASSANDRA_SYS_LIB_PATHwhen that formula is installed. - On Apple Silicon macOS hosts,
darwin-x64is skipped by default because the required x86_64 Cassandra/OpenSSL native dependencies are typically not present.make package-tectonic-alltherefore producesdarwin-arm64,linux-arm64, andlinux-x64on those hosts unless you build the Intel macOS artifact on an actual Intel Mac. - Linux targets build in Docker buildx using docker/tectonic-cli-linux-builder.Dockerfile, which installs the native RocksDB and Cassandra driver prerequisites inside the builder image.
- The Linux builder defaults to conservative parallelism (
CPP_BUILD_JOBS=2,CARGO_BUILD_JOBS=2) to avoid memory-pressure failures during the Cassandra driver compile. Override withBOOTSTRAP_TECTONIC_DOCKER_CPP_JOBSandBOOTSTRAP_TECTONIC_DOCKER_CARGO_JOBSif your machine can handle more. make package-tectonic-alltherefore expects Docker buildx to be available when run on macOS.- If a packaged target already exists in
dist/, the script skips rebuilding it. SetPACKAGE_FORCE=1to rebuild anyway.
You can override the platform list with:
PACKAGE_PLATFORMS=darwin-arm64,linux-x64 make package-tectonicIf Cassandra libraries live outside the default linker path, set
CASSANDRA_SYS_LIB_PATH before packaging. On Apple Silicon macOS, that often
means:
export CASSANDRA_SYS_LIB_PATH=/opt/homebrew/lib
make package-tectonicFor platform-specific overrides, use env vars like:
export CASSANDRA_SYS_LIB_PATH_DARWIN_ARM64=/opt/homebrew/lib
export CASSANDRA_SYS_LIB_PATH_DARWIN_X64=/usr/local/libPackaged artifacts are written to:
dist/
Those tarballs should then be uploaded to the GitHub release tag configured by the bootstrap scripts.