Copied to clipboard

Local Development

Build tapes from source and run it locally.

Prerequisites

  • Go 1.25+
  • CGO enabled with SQLite dev libraries (e.g., libsqlite3)
  • Docker — required for linting, formatting, and tests via Dagger
  • Ollama — optional, for embeddings when running tapes serve
Nix Users

A Nix flake carries all development dependencies. Run nix develop or enable direnv allow for automatic environment loading.

Clone and Build

1. Clone the repo

git clone https://github.com/papercomputeco/tapes.git
cd tapes

2. Build local binaries

make build-local

Outputs tapes, tapesprox, and tapesapi to the ./build/ directory. Sets CGO_ENABLED=1 and GOEXPERIMENT=jsonv2 automatically.

3. Run it

./build/tapes serve

4. Install to your PATH (optional)

make install

Copies binaries to your $GOBIN directory.

Demo Data

Seed demo sessions to explore the Deck UI without real data:

./build/tapes deck --demo

Reseed with fresh data:

./build/tapes deck --demo --overwrite

Nightly Builds

Download the latest nightly binary directly instead of building from source:

curl -O https://download.tapes.dev/nightly/darwin/arm64/tapes
chmod +x ./tapes
sudo mv ./tapes /usr/local/bin/

Available platforms:

OS Arch URL
macOS ARM64 darwin/arm64/tapes
macOS AMD64 darwin/amd64/tapes
Linux ARM64 linux/arm64/tapes
Linux AMD64 linux/amd64/tapes

Replace the path in the URL above with the row matching your platform. Base URL: https://download.tapes.dev/nightly/

Useful Commands

make build-local Build binaries with local toolchain
make install Build and install to $GOBIN
make unit-test Run tests via Dagger (requires Docker)
make format Auto-fix lint and formatting issues
make check Run golangci-lint checks
make clean Remove the build directory

Troubleshooting

SQLite Errors

Verify SQLite dev libraries are installed and CGO_ENABLED=1 is set. make build-local handles this automatically.

Merkle Hashing Failures

tapes requires GOEXPERIMENT=jsonv2. The Makefile sets this for you. If building manually, include it:

CGO_ENABLED=1 GOEXPERIMENT=jsonv2 go build ./cli/tapes

Dagger Commands Failing

make format, make check, and make unit-test run through Dagger and require Docker to be running.

Last updated: