Architecture
In the beta, Novix Flow is an MCP server that runs next to your Claude client. It exposes read-only access to ClickHouse, read/write access to Linear, and scoped access to your repository. Claude decides which tools to call. The dashed path is the agent mode in development, where Novix orchestrates Claude directly.
Beta setup
Available in BetaBeta teams receive access to the package during onboarding. Add the server to your Claude client configuration (for Claude Desktop, claude_desktop_config.json), restart the client, and ask Claude to triage a service.
{
"mcpServers": {
"novix-flow": {
"command": "npx",
"args": ["-y", "@novixlab/flow-mcp"],
"env": {
"CLICKHOUSE_URL": "https://your-clickhouse:8443",
"CLICKHOUSE_USER": "novix_readonly",
"CLICKHOUSE_PASSWORD": "••••••••",
"LINEAR_API_KEY": "lin_api_••••••••",
"NOVIX_REPO_PATH": "/path/to/your/repo"
}
}
}
}Use a read-only ClickHouse user. Credentials stay on your machine and are only used by the local server.
Tools & prompts
Available in Beta| Name | Type | What it does |
|---|---|---|
| query_clickhouse_errors | tool | Error spikes by service and time window. |
| get_linear_context | tool | Related Linear issues for the affected service. |
| read_repo_files | tool | Source files involved in the failure. |
| update_linear_issue | tool | Create or update the issue with root cause + patch. |
| triage-incident | prompt | Guided workflow: spike → hypothesis → patch → write-back. |
- Incident triage workflow
The triage-incident MCP prompt guides Claude from spike → root-cause hypothesis → proposed patch.
- Linear write-back
update_linear_issue creates or updates the issue with the root cause and the proposed patch.
- Local-first
Runs on your machine with your own Claude client. Novix stores no code or telemetry.
Agent mode (preview)
In DevelopmentAgent mode runs without a human in the chat. Haiku triages every spike; complex cases escalate to Sonnet with the repository context served from Claude's prompt cache. The sketch below shows the shape of the loop.
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic(); // reads ANTHROPIC_API_KEY
const tools: Anthropic.Tool[] = [
{
name: "query_clickhouse_errors",
description: "Find error spikes for a service in a time window.",
input_schema: {
type: "object",
properties: {
service: { type: "string" },
window: { type: "string", description: "e.g. 5m, 1h" },
},
required: ["service", "window"],
},
},
{
name: "update_linear_issue",
description: "Attach root cause and proposed patch to a Linear issue.",
input_schema: {
type: "object",
properties: {
issueId: { type: "string" },
rootCause: { type: "string" },
patch: { type: "string" },
},
required: ["issueId", "rootCause"],
},
},
{
name: "run_test_suite",
description: "Run the project's tests against a patch in a sandbox.",
input_schema: {
type: "object",
properties: { patch: { type: "string" } },
required: ["patch"],
},
},
];
// 1. Fast triage of every spike on Claude Haiku
const triage = await client.messages.create({
model: "claude-haiku-5-5",
max_tokens: 1024,
tools,
messages: [{ role: "user", content: `Triage this spike:\n${spike}` }],
});
// 2. Escalate multi-file cases to Claude Sonnet,
// with the repository context kept in the prompt cache
const fix = await client.messages.create({
model: "claude-sonnet-5-5",
max_tokens: 8192,
system: [
{ type: "text", text: "You are Novix Flow, an incident-resolution agent." },
{ type: "text", text: repoContext, cache_control: { type: "ephemeral" } },
],
tools,
messages: [{ role: "user", content: triageSummary }],
});Security & data
The beta server runs on your machine. Novix stores no code, telemetry or credentials.
Reasoning happens in your own Claude client under your account and its data policies.
For Novix Cloud: encryption in transit and at rest, zero-retention options, VPC deployment.
SOC 2 program for Novix Cloud and enterprise customers.