← MCP servers · campfirein

Cipher

BLOCKgrade D · trust 69/100

ByteRover CLI (brv) - The portable memory layer for autonomous coding agents (formerly Cipher)

agentaiautonomous agentsclicoding assistantcontext memorydeveloper toolsknowledge management

Overview

From the repository's own README, as read at the audited commit.

# ByteRover CLI<div align="center"><img src="./assets/images/logo/byterover-logo.svg" alt="ByteRover Logo" width="280" /><p align="center"><em>Interactive REPL CLI for AI-powered context memory</em></p><p align="center"><a href="LICENSE"><img src="https://img.shields.io/badge/License-Elastic%202.0-blue.svg" alt="License" /></a><a href="https://npmjs.org/package/byterover-cli"><img src="https://img.shields.io/npm/v/byterover-cli.svg" alt="Version" /></a><a href="https://npmjs.org/package/byterover-cli"><img src="https://img.shields.io/npm/dw/byterover-cli.svg" alt="Downloads" /></a><a href="https://docs.byterover.dev"><img src="https://img.shields.io/badge/Docs-Documentation-green.svg" alt="Documentation" /></a><a href="https://discord.com/invite/UMRrpNjh5W"><img src="https://img.shields.io/badge/Discord-Join%20Community-7289da" alt="Discord" /></a></p></div>## OverviewByteRover CLI (`brv`) gives AI coding agents persistent, structured memory. It lets developers curate project knowledge into a context tree, sync it to the cloud, and share it across tools and teammates.Run `brv` in any project directory to start an interactive REPL powered by your choice of LLM. The agent understands your codebase through an agentic map, can read and write files, execute code, and store knowledge for future sessions.📄 Read the [paper](https://arxiv.org/abs/2604.01599) for the full technical details.Or download our self-hosted PDF version of the paper [here](https://byterover.dev/paper).**Key Features:**- 🌐 Web dashboard for curating and querying context (`brv webui`)- 🖥️ Interactive TUI with REPL interface (React/Ink)- 🧠 Context tree and knowledge storage management- 🔀 Git-like version control for the context tree (branch, commit, merge, push/pull)- 🤖 20 LLM providers (Anthropic, OpenAI, Google, Groq, Mistral, xAI, DeepSeek, and more)- 🛠️ 24 built-in agent tools (code exec, file ops, knowledge search, memory management)- 🔄 Cloud sync with push/pull- 👀 Review workflow for curate operat

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.

claude-code
claude mcp add byterover-cli -- npx -y [email protected]
claude-desktop
{
  "mcpServers": {
    "byterover-cli": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ]
    }
  }
}

Exposed tools (2) 2 read · 0 write · 0 destructive

ToolRiskDescription
brv-curateread
brv-queryread

Details

Source
campfirein/cipher
npm
byterover-cli@3.16.1
Transports
stdio
License
NOASSERTION
Stars
4,957 · pushed 80d ago

Trust audit

Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (10 observation(s))
Network
declared (15 observation(s))
Shell
declared (6 observation(s))
Dependencies
not all pinned
Secrets in source
none-found

Findings (21)

HIGHCode injection · code.deserialize · CWE-78, CWE-94, CWE-95
src/server/infra/migrate/parsers.ts:97
parsed = yaml.load(yamlBlock, {schema: FRONTMATTER_SCHEMA})
Why it matters. deserialises untrusted bytes into live objects
Fix. use json or yaml.safe_load
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
src/webui/lib/transport.ts:49
const socket = io(`http://127.0.0.1:${config.daemonPort}`, {
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
src/webui/vite.config.ts:178
target: 'http://127.0.0.1',
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
src/webui/vite.config.ts:183
target: 'http://127.0.0.1',
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
src/webui/vite.config.ts:193
if (status.running) return `http://127.0.0.1:${status.port}`
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
src/webui/vite.config.ts:198
return 'http://127.0.0.1:0'
LOWInventory / provenance · inv.hidden_file · CWE-1104
.gitmodules
.gitmodules
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.mocharc.json
.mocharc.json
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.prettierrc.json
.prettierrc.json
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
src/server/infra/executor/query-result-cache.ts:62
return createHash('md5').update(data).digest('hex').slice(0, 16)
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
src/server/infra/vc/file-vc-git-config-store.ts:18
return createHash('sha1').update(projectPath).digest('hex').slice(0, 16)
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
eslint.config.mjs:45
group: ['**/server/**', '../server/**', '../../server/**', '../../../server/**', '../../../../server/**'],
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
eslint.config.mjs:49
group: ['**/agent/**', '../agent/**', '../../agent/**', '../../../agent/**', '../../../../agent/**'],
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
eslint.config.mjs:53
group: ['**/oclif/**', '../oclif/**', '../../oclif/**', '../../../oclif/**', '../../../../oclif/**'],
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
eslint.config.mjs:57
group: ['**/tui/**', '../tui/**', '../../tui/**', '../../../tui/**', '../../../../tui/**'],
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
eslint.config.mjs:75
group: ['**/server/**', '../server/**', '../../server/**', '../../../server/**', '../../../../server/**'],
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
src/webui/lib/base64url.ts:18
const binary = atob(padded)
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
@ai-sdk/anthropic, @ai-sdk/cerebras, @ai-sdk/cohere, @ai-sdk/deepinfra, @ai-sdk/google, @ai-sdk/groq, @ai-sdk/mistral, @ai-sdk/openai
Why it matters. 119 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWSupply chain · prompt.pipe_to_shell · CWE-829, CWE-1357
CHANGELOG.md:185
- **Intel Mac (darwin-x64) install support** — `curl -fsSL https://byterover.dev/install.sh | sh` now installs on Intel Macs. Previously the installer rejected `darwin-x64` with an Apple-Silicon-only 
LOWSupply chain · prompt.pipe_to_shell · CWE-829, CWE-1357
CHANGELOG.md:407
- **Native binary installer** - Install on macOS and Linux without Node.js via `curl -fsSL https://byterover.dev/install.sh | sh`. Uninstaller script also available.
LOWSupply chain · prompt.pipe_to_shell · CWE-829, CWE-1357
README.md:72
curl -fsSL https://byterover.dev/install.sh | sh

Gates applied: no_behavioural_pass.

Audited 2026-09-14 · audit v0.4.0 · source sha e1090ca7ceaa · full audit: observations/trust-audit/mcp-server/campfirein__cipher.json · Report an issue or request a re-scan

Audit history

DateSourceVerdictGradeScoreChange
2026-09-14e1090ca7ceaaBLOCKD69first audit

Alternatives

Other servers in the same categories, safer ones first.

Questions

What is the Cipher MCP server?

ByteRover CLI (brv) - The portable memory layer for autonomous coding agents (formerly Cipher)

What tools does Cipher expose?

2 in total: 2 read-only, 0 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is Cipher safe to connect to an agent?

No — not without reading the findings first. The audit graded it D (69/100) and found 1 critical or high issue in the source. Each one is listed on this page with the file and line it is on.

What credentials does Cipher need?

No credential environment variables were found in its source, so it appears to need none.

How does Cipher run?

It speaks stdio, so it runs as a local process your client starts. It is published on npm as byterover-cli at 3.16.1.

How current is this page?

The grade is for one exact copy of the source (e1090ca7ceaa), read on 2026-09-14. The repository is watched and re-audited when it changes.

Provenance: OBSERVED · read 2026-09-14 · job trust-audit-2026-09-14