OpenCode plugin that stores session and message sync data locally in SQLite. Designed to work across multiple AI harnesses (OpenCode, Cursor, Claude Code).
- Captures session and message events from OpenCode.
- Aggregates message parts into full text content.
- Writes sessions/messages to a local SQLite database.
Add the plugin to your OpenCode config (~/.config/opencode/opencode.json or
project-level opencode.json):
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["@dxta-dev/clankers"]
}Install the package (npm or Bun). The clankers daemon creates and migrates the local database on startup.
The plugin requires the clankers binary. Install it with:
# Linux/macOS
curl -fsSL https://raw.githubusercontent.com/dxta-dev/clankers/main/scripts/install-daemon.sh | sh
# Windows (PowerShell)
irm https://raw.githubusercontent.com/dxta-dev/clankers/main/scripts/install-daemon.ps1 | iexOptions:
# Install specific version
curl -fsSL ... | sh -s -- v0.1.0
# Or use environment variables
CLANKERS_VERSION=v0.1.0 curl -fsSL ... | sh
CLANKERS_INSTALL_DIR=/usr/local/bin curl -fsSL ... | shThe script downloads the binary from GitHub Releases, verifies the checksum, and
installs to ~/.local/bin (Linux/macOS) or %LOCALAPPDATA%\clankers\bin (Windows).
Alternatively, if you use Nix:
nix profile install github:dxta-dev/clankers#clankersThe flake provides multiple integration options (package name: clankers, NixOS module: services.clankers):
NixOS System Service (system-wide daemon):
{
inputs.clankers.url = "github:dxta-dev/clankers";
outputs = { self, nixpkgs, clankers }: {
nixosConfigurations.myhost = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
clankers.nixosModules.default
{
services.clankers = {
enable = true;
logLevel = "info";
dataRoot = "/var/lib/clankers";
};
}
];
};
};
}Dev Shell with Auto-Start (for active development):
# From the clankers repo - daemon auto-starts on shell enter, stops on exit
nix develop .#with-all-plugins
# Or manual control
nix develop
clankers daemon &Flake Overlay (adds pkgs.clankers to your nixpkgs):
nixpkgs.overlays = [ clankers.overlays.default ];
# Now pkgs.clankers is available everywhere- Install the daemon (see above).
- Add the plugin to your OpenCode config (or drop a built plugin into
.opencode/plugins/). - Start
clankers daemonso it can create the database. - Restart OpenCode so the plugin loads with local SQLite sync enabled.
Clankers stores its database and config under a harness-neutral app data directory:
- Linux:
${XDG_DATA_HOME:-~/.local/share}/clankers/ - macOS:
~/Library/Application Support/clankers/ - Windows:
%APPDATA%\clankers\
Defaults
- Database:
<data root>/clankers.db - Config:
<data root>/clankers.json
Overrides
- Set
CLANKERS_DATA_PATHto change the app data root. - Set
CLANKERS_DB_PATHto point at a specific database file.
Nix is required for development. This project uses a Nix flake for reproducible builds and consistent tooling across all platforms.
- Nix with flakes enabled
# Enter the dev shell (auto-starts daemon + builds all plugins)
nix develop .#with-all-plugins
# Or manual control
nix develop
clankers daemon &| Task | Command |
|---|---|
| Typecheck | nix develop -c pnpm check |
| Lint | nix develop -c pnpm lint |
| Format | nix develop -c pnpm format |
| Build plugins | nix develop -c pnpm build |
| Run all tests | nix flake check |
Or enter the shell first:
nix develop
pnpm check
pnpm lint
pnpm build:opencodeBuild individual packages without entering dev shell:
# Build daemon for current system
nix build .#clankers
# Build plugins
nix build .#clankers-opencode
nix build .#clankers-claude-code
nix build .#clankers-cursorResults are in ./result/:
- Daemon:
./result/bin/clankers - Plugins:
./result/dist/,./result/src/,./result/package.json
For iterative development, use pnpm inside the nix shell:
nix develop
pnpm install
pnpm build # Build all apps
pnpm build:opencode # Build specific app
pnpm build:claude
pnpm build:cursor| Shell | Use Case |
|---|---|
nix develop |
Manual daemon control, minimal setup |
nix develop .#with-all-plugins |
Recommended - Auto-starts daemon, builds OpenCode + Claude Code plugins, creates config files |
apps/opencode-plugin→@dxta-dev/clankers-opencodeapps/cursor-plugin→@dxta-dev/clankers-cursorapps/claude-code-plugin→@dxta-dev/clankers-claude-codepackages/core- Shared TypeScript librarypackages/cli- Go daemon