Cassandra

Lightweight, dependency-free Cassandra emulator speaking the native CQL binary protocol (v4).

KeyValue
Port9042
ProtocolCQL native (TCP)
Size~90 KB
Startup< 300ms

Default Connection

cassandra://parlel-bridge:9042

No auth required.

Supported CQL

StatementNotes
CREATE KEYSPACE [IF NOT EXISTS] <ks>Registers a keyspace
USE <ks>Accepted
CREATE TABLE [IF NOT EXISTS] <ks>.<t> (...)Columns + types parsed
INSERT INTO <ks>.<t> (cols) VALUES (...)Row insert
SELECT <cols>|* FROM <ks>.<t>Returns matching rows
SELECT release_versionReturns 4.0.0

Usage

The parlel/bridge sidecar exposes Cassandra at parlel-bridge:9042, carrying the raw CQL (TCP) protocol over the sandbox HTTPS preview proxy. Your app connects with an unmodified cassandra-driver — no Parlel code in the app.

# docker-compose.test.yml
include:
  - path: parlel-bridge.yml          # image: parlel/bridge
services:
  app:
    build: .
    env_file: test.env
    depends_on:
      parlel-bridge: { condition: service_healthy }
PARLEL_API_KEY=pk_... docker compose -f docker-compose.test.yml up
import { Client } from "cassandra-driver";

// Unmodified real driver, pointed at the bridge hostname
// (or `localhost` if you run the bridge outside Docker and publish ports)
const client = new Client({
  contactPoints: ["parlel-bridge:9042"],
  localDataCenter: "datacenter1",
});
await client.execute("CREATE KEYSPACE app WITH replication = {'class':'SimpleStrategy','replication_factor':1}");
await client.execute("CREATE TABLE app.users (id int PRIMARY KEY, name text)");
await client.execute("INSERT INTO app.users (id, name) VALUES (1, 'Ada')");
const rs = await client.execute("SELECT * FROM app.users");

Access via MCP (Parlel Sandbox)

Cassandra runs as a TCP service inside a Parlel sandbox; drive CQL through the sandbox MCP endpoint with parlel_execute (statements separated by ;):

{
  "service": "cassandra",
  "command": "CREATE KEYSPACE app; CREATE TABLE app.users (id int, name text); INSERT INTO app.users (id, name) VALUES (1, 'Ada'); SELECT * FROM app.users;"
}

Each statement returns { statement, fields, rows }.

Surface coverage

This emulator faithfully replicates the API surface most application code and agents exercise. Anything below the supported lines is either an intentional design choice for a fast, zero-cost local emulator (✓ By design) or a candidate for a future release (⟳ Roadmap) — never a silent inaccuracy.

Legend: ✅ fully supported · ◐ accepted (stored, not strictly enforced) · ✓ by design · ⟳ on the roadmap.

FeatureStatus
Keyspaces / tables / insert / selectSupported
WHERE / clustering / secondary indexesNot evaluated
Prepared statements / batchesAccepted, simplified
Auth / TLSNot required / not supported
<!-- parlel:testenv:start -->

Configuration — test.env

Copy these into your test.env (used by the bridge sidecar flow). Tokens are Parlel's seeded test credentials — any non-empty value is accepted by the emulator, so you rarely need to change them. Swap in real credentials only when pointing at the live service in prod.env.

CASSANDRA_CLUSTER_NAME=parlel-cluster
CASSANDRA_DC=datacenter1
<!-- parlel:testenv:end -->