Skip to content
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,3 +30,6 @@ jobs:

- name: Run verification gate
run: pnpm verify

- name: Build and verify Linux MCPB
run: pnpm build:mcpb
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,6 @@ Desktop.ini
*.orig

.pnpm-store/*
.mcpb/
artifacts/*.mcpb
integrations/claude-desktop/node_modules/
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Relay

For Linux-only Claude Desktop MCPB evaluation, see [the MCPB guide](integrations/claude-desktop/README.md) and [verification record](docs/claude-desktop-mcpb-verification.md).

**Testing Relay for the first time?** Follow the [source-checkout installation and usage guide](docs/source-checkout-guide.md) to clone, run, connect an AI client, and complete a safe smoke test.

Agent integrations: see [setup](docs/agent-integration.md) and [troubleshooting](docs/troubleshooting-agent-integration.md).
Expand Down
41 changes: 41 additions & 0 deletions docs/claude-desktop-mcpb-verification.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Claude Desktop Linux MCPB Verification

## Scope and support statement

This work packages Relay's canonical MCP stdio server for later Linux evaluation. It does not claim Linux MCPB compatibility.

## Official-source verification

On 2026-07-30, the MCPB repository, manifest specification, CLI reference, and Claude Desktop local-server guide were rechecked. The source manifest targets MCPB manifest version 0.3 and Node stdio entry-point configuration.

## Build environment

Windows implementation environment. Linux runtime testing was unavailable.

## Bundle contents

The staged bundle is designed to include the canonical `dist/mcp/main.js`, package metadata, migrations, and production dependencies only. Durable SQLite data remains outside the extension directory through Relay's existing data-path resolution and `RELAY_DB_PATH` override.

## Windows implementation verification

Platform-independent model, staging, source-asset, and command-orchestration tests run on Windows. The Linux-only commands reject `win32` before staging production dependencies, generating an artifact, or altering repository output.

## Linux native build verification

Not executed; pending a supported Linux environment. In particular, `better-sqlite3` loading, Node ABI compatibility, libc compatibility, migrations from the staged bundle, and staged stdio startup are unverified.

## Claude Desktop Linux verification

Not executed; pending a supported Linux environment and an installed Claude Desktop client.

## Pending evidence

The Linux build, MCPB validation and packing, staged native runtime verification, Claude Desktop installation, tool discovery, capture and session retrieval, explicit mutation, restart, update, disable, and removal data-retention checks remain pending.

## Failures and limitations

Windows must not be used as evidence for Linux native `better-sqlite3`, Node ABI, staged MCP runtime, or Claude Desktop support.

## Completion decision

**UNVERIFIED — Linux build and Claude Desktop validation pending.**
12 changes: 12 additions & 0 deletions integrations/claude-desktop/.mcpbignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
.env
.env.*
*.db
*.db-wal
*.db-shm
*.log
*.map
tests/
coverage/
docs/
.git/
.github/
7 changes: 7 additions & 0 deletions integrations/claude-desktop/NOTICE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Relay Linux MCPB Notice

This unsigned bundle is produced for local compatibility evaluation under issue #36.
The Relay repository does not currently declare a top-level project licence, so this artifact must not be represented as a generally redistributable release.
Bundled third-party packages retain their package metadata and licence files under `node_modules`.
The bundle contains no user database. Relay stores durable data in its normal per-user Linux data location or at the explicit `RELAY_DB_PATH` supplied by the user.
Removing the extension does not authorize deleting the Relay database.
25 changes: 25 additions & 0 deletions integrations/claude-desktop/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Relay Linux MCPB for Claude Desktop

This unsigned bundle is for local evaluation on one Linux machine only. It packages Relay's canonical MCP stdio server and does not establish broad Linux or Claude Desktop support.

## Build on Linux

Use Node 24 and pnpm 10.2.0. From the Relay checkout, run `pnpm install --frozen-lockfile` followed by `pnpm build:mcpb`. The output is `artifacts/relay-<version>-linux-<arch>.mcpb`.

These commands intentionally refuse to run on Windows and macOS before staging dependencies or writing an artifact. See [the verification record](../../docs/claude-desktop-mcpb-verification.md) for the current evidence status.

## Install and verify

In Claude Desktop, open Settings → Extensions → Advanced settings → Extension Developer → Install Extension, then select the generated `.mcpb`. Discover Relay through the chat `+` menu or Developer settings. Verify `relay_health`, capture a task with an exact session ID, retrieve that session, and perform only an explicitly directed mutation.

Fully quit and restart Claude Desktop, then repeat retrieval. For a local update, build a deliberately incremented test version and use the supported custom-extension update flow. Record the tested Linux distribution, architecture, Claude Desktop version, and any Node ABI information in the verification record.

Use session ID `claude-desktop-mcpb-20260730-001`, capture `Verify Relay Linux MCPB persistence`, retrieve that exact session, then explicitly direct `task_triage` to move the captured task to `ACTIVE`. Confirm the same task and session remain available after restart and an incremented local bundle update.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Use a shipped mutation tool in the verification procedure.

README.md lists five task tools and relay_health, but it does not list task_triage. The documented mutation step cannot run against this bundle. Replace task_triage with the actual shipped mutation tool from the MCP contract, or remove this step and document the supported explicit mutation.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@integrations/claude-desktop/README.md` at line 17, Update the verification
procedure around the session `claude-desktop-mcpb-20260730-001` to use the
mutation tool actually shipped by the MCP contract instead of `task_triage`, or
remove that mutation step and document the supported explicit mutation. Keep the
task capture, exact-session retrieval, restart, and incremented bundle update
verification intact.


## Data safety and troubleshooting

Relay durable data stays in its normal Linux location or the explicit `RELAY_DB_PATH`; it must never be placed in Claude's unpacked extension directory. Disabling or removing the extension does not delete the Relay database.

Use Claude Desktop's extension controls to disable or remove the extension only. Do not delete the database. After removal, run the built Relay CLI with the recorded absolute `RELAY_DB_PATH` and task ID to verify that the retained task remains `ACTIVE`.

Inspect Claude extension logs for startup diagnostics. If Claude's hosted Node runtime does not meet Relay's `>=24 <25` requirement, or `better-sqlite3` cannot load for its Node ABI and Linux libc, stop and record the failure. Do not claim compatibility or lower the Node requirement without review.
27 changes: 27 additions & 0 deletions integrations/claude-desktop/manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
{
"manifest_version": "0.3",
"name": "relay",
"display_name": "Relay",
"version": "0.1.0",
"description": "Local task sidecar for human-AI workflows",
"long_description": "Relay gives Claude Desktop access to a local personal task queue through its canonical stdio server. Data stays in the user's normal Relay SQLite location unless RELAY_DB_PATH is explicitly configured.",
"author": { "name": "Krishnamurti" },
"repository": { "type": "git", "url": "https://github.com/krishna916/relay.git" },
"documentation": "https://github.com/krishna916/relay/blob/main/integrations/claude-desktop/README.md",
"support": "https://github.com/krishna916/relay/issues",
"server": {
"type": "node",
"entry_point": "server/main.js",
"mcp_config": {
"command": "node",
"args": ["${__dirname}/server/main.js"],
"env": {}
}
},
"tools_generated": true,
"keywords": ["tasks", "productivity", "local-first", "mcp"],
"compatibility": {
"platforms": ["linux"],
"runtimes": { "node": ">=24 <25" }
}
}
15 changes: 15 additions & 0 deletions integrations/claude-desktop/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"name": "relay",
"version": "0.1.0",
"description": "Runtime package for Relay's local bundle",
"private": true,
"type": "module",
"engines": {
"node": ">=24 <25"
},
"dependencies": {
"@modelcontextprotocol/sdk": "1.29.0",
"better-sqlite3": "13.0.1",
"zod": "4.4.3"
}
}
Loading
Loading