Skip to content

Contributing and Credits

Shivamsh edited this page Sep 20, 2026 · 1 revision

Build and test locally

You do not need this to use RIFT. The installer downloads a prebuilt binary.

Requirements: Bun 1.3.14 (the packageManager field in opencode/package.json pins bun@1.3.14; CONTRIBUTING.md says Bun 1.3+).

git clone https://github.com/Datum-Collective/RIFT-coding-agent.git
cd RIFT-coding-agent/opencode
bun install
bun run dev

bun run dev (root script bun run --cwd packages/opencode src/index.ts) starts the TUI from source. Useful variants from CONTRIBUTING.md:

bun run dev --help           # show all available commands
bun run dev serve            # start headless API server
bun run dev serve --port 8080
bun run dev web              # start server + open web interface
bun run dev <directory>      # start TUI in a specific directory

Build a standalone executable:

./packages/opencode/script/build.ts --single
./packages/opencode/dist/opencode-<platform>/bin/opencode

Replace <platform> with your platform (for example darwin-arm64, linux-x64).

Checks:

bun run typecheck            # turbo typecheck across packages (from repo root script)
bun run lint                 # oxlint

Tests cannot run from the repo root (the root test script prints do not run tests from root and exits 1). Run them from package directories such as packages/opencode:

bun run --cwd packages/opencode test
bun typecheck                # from a package directory, never bare tsc

PR expectations from CONTRIBUTING.md: open an issue first and link it (Fixes #123); keep PRs small; include screenshots or video for UI changes; explain what you tested and how a reviewer reproduces it for logic changes; follow conventional commit titles (feat:, fix:, docs:, chore:, refactor:, test: with optional scope).

How a release is cut

Push a tag; the release workflow (.github/workflows/release.yml) does the rest:

git tag v0.1.8
git push origin v0.1.8

What the workflow does:

  1. Resolves the version from the tag (must be X.Y.Z), installs Bun, and runs bun install.
  2. Creates the GitHub release as a draft so a half-uploaded release never appears in releases/latest.
  3. Builds every target with ./packages/opencode/script/build.ts (OPENCODE_VERSION set from the tag) and uploads the archives.
  4. Checks all twelve platform archives are present (rift-linux-x64.tar.gz, rift-linux-x64-baseline.tar.gz, rift-linux-arm64.tar.gz, three musl variants, rift-darwin-x64.zip, rift-darwin-x64-baseline.zip, rift-darwin-arm64.zip, rift-windows-x64.zip, rift-windows-x64-baseline.zip, rift-windows-arm64.zip). A partial release never goes public.
  5. Publishes the release (draft off).
  6. verify-install runs the documented one-line install against the real published release on Ubuntu, macOS and Windows, checks rift --version and opencode --version from a fresh shell, checks rift debug info names the embedded release next to the OpenCode runtime, and checks rift.version matches.
  7. withdraw-if-broken pulls a failed release back to a draft.

Install-script changes are checked separately by .github/workflows/installers.yml: shellcheck and parse of opencode/install, link behavior tests, and PowerShell parse plus banner tests for opencode/install.ps1.

Credits

RIFT is a fork of OpenCode by Anomaly, and the overwhelming majority of this codebase is their work. The agent loop, provider layer, tool system, LSP and MCP integration, permissions, config system and the TUI foundation are all OpenCode's. RIFT rebuilds the interface around tasks and adds the verification layer.

OpenCode is MIT licensed, and so is RIFT. If you like what is here, a great deal of the credit belongs upstream. Give them a star at anomalyco/opencode.

RIFT is not affiliated with, endorsed by, or supported by the OpenCode team. Direct issues with RIFT to Datum-Collective/RIFT-coding-agent, not to them.

Contributors to this fork (git log by author at time of writing):

  • shiv: 43 commits
  • dan: 3 commits
  • Shivamsh: 2 commits

Note: git shortlog -sn --no-merges returned no output in this checkout, so the counts above come from git log --format=%an.

Clone this wiki locally