Opencode Local Data Access
raw JSON →The `opencode-local` package provides a Node.js interface for programmatic access to local Opencode project data. It allows developers to read information directly from the local Opencode SQLite database, bypassing the need to shell out to `opencode db` for each query. Additionally, it supports querying a running Opencode server for project lists, offering flexibility to retrieve data from either the local database or a live instance. The current stable version is 1.3.11, and while a specific release cadence isn't documented, its versioning suggests ongoing maintenance. A key differentiator is its dual capability to interface with both the local SQLite file and a remote Opencode server's API, along with dedicated utilities for exporting project data to JSON, making it a powerful tool for integrating Opencode project insights into developer workflows or custom tooling. It requires Node.js >=22.5.0 and an existing local Opencode installation.
Common errors
error Error: SQLITE_CANTOPEN: unable to open database file ↓
dbPath in createLocal() and ensure the current user has read permissions for the file. Check if Opencode is installed and has created its database. error Error: spawn opencode ENOENT ↓
opencode CLI is installed and accessible in your system's PATH, or provide the absolute path to the opencode binary using the bin option in createLocal(). error FetchError: connect ECONNREFUSED 127.0.0.1:4096 ↓
baseUrl in createLocal().search() options (or similar) is correct and matches the server's listening address and port. Warnings
gotcha This package requires a local Opencode installation and an accessible database (`opencode.db`). Failure to meet this prerequisite will result in runtime errors when attempting to query local data. ↓
breaking This package explicitly requires Node.js version 22.5.0 or higher as defined in its `engines` field. Running with older Node.js versions will lead to immediate runtime errors due to incompatible syntax or API usage. ↓
gotcha When using server-related methods like `search` or `listProjectsFromServer`, a running Opencode server must be accessible. An incorrect `baseUrl` or a down server will lead to network connection errors. ↓
gotcha The `exportProjects` utility function is accessed via a subpath import (`opencode-local/export`), not directly from the main package entry. Importing it incorrectly will result in module not found errors. ↓
Install
npm install opencode-local yarn add opencode-local pnpm add opencode-local Imports
- createLocal wrong
const createLocal = require('opencode-local').createLocalcorrectimport { createLocal } from 'opencode-local' - exportProjects wrong
import { exportProjects } from 'opencode-local'correctimport { exportProjects } from 'opencode-local/export' - ProjectRow wrong
import { ProjectRow } from 'opencode-local'correctimport type { ProjectRow } from 'opencode-local'
Quickstart
import { createLocal } from "opencode-local"
async function run() {
const client = createLocal()
try {
const projects = await client.listProjects()
// Get IDs of the first 5 projects to list sessions
const projectIds = projects.slice(0, 5).map((project) => project.id)
const sessions = await client.listSessions(projectIds)
console.log("First project:", projects[0])
console.log("First session:", sessions[0])
} catch (error) {
console.error("Failed to fetch data:", error)
} finally {
client.close()
}
}
run()