Everything you need for AI-assisted engineering.
Four product areas, built to work together: persistent memory, security, automation, and developer insights.
Memory
Structured knowledge that persists across every session.
Store decisions, conventions, patterns, and lessons in a format every AI tool can use. Semantic search surfaces the right context automatically.
Structured memory types
Six types — decision, convention, pattern, lesson, snippet, reference — each with importance scores, tags, and lifecycle status.
Semantic + keyword search
Hybrid search combines pgvector embeddings with full-text search. Find the right memory regardless of exact wording.
Smart context assembly
Context packs assemble the most relevant memories within your token budget and inject them directly into your AI prompt.
Indexed knowledge
Connect GitHub repos and upload docs. Your AI can search your actual codebase and documentation, not just manually entered memories.
Quality control
Verify, pin, deprecate, and supersede memories. A review workflow keeps knowledge accurate over time.
const { veriova } = require("veriova-sdk");
const cv = new veriova({ apiKey: "cv_..." });
// Push memories
await cv.push("my-project", [
{
type: "decision",
title: "PostgreSQL + pgvector",
content: "Chose pgvector for semantic search.",
importance: 9,
},
{
type: "convention",
title: "API key prefix",
content: "All API keys are prefixed cv_",
},
]);
// Search
const results = await cv.search(
"my-project",
"how do we handle auth?"
);
// Inject into prompt
const ctx = await cv.context(
"my-project",
"what database do we use?",
{ max_tokens: 2000 }
);
// ctx.pack → inject as system messageSecurity
Safe by default, auditable by design.
Outbound secret redaction scans every AI response before it reaches the developer. Drift detection surfaces mismatches between stored knowledge and reality.
Secret redaction
Postgres URLs, API keys, bearer tokens, private keys, and more are automatically redacted in every outbound MCP response.
Drift detection
Continuously monitors your stored knowledge for inconsistencies between what your AI believes and what's actually in your codebase.
RBAC and audit logs
Role-based access control (owner, admin, editor, reader) with a full audit trail of every memory change and API call.
Enterprise-grade auth
Magic link authentication, short-lived sessions, per-project API keys, and no password storage.
Self-hosting
Run Veriova on your own infrastructure with Docker Compose, your own Postgres and MinIO instances.
// Secret redaction in action
// Before: memory search result
{
"title": "Database connection",
"content": "Connect with postgres://admin:s3cr3t@db.prod:5432/app"
}
// After: automatically redacted
{
"title": "Database connection",
"content": "Connect with [REDACTED:postgres_url]"
}
// Drift detection
GET /api/v1/reliability/trends?days=30
{
"trends": [
{ "date": "2026-03-01", "detected": 3, "resolved": 2 },
{ "date": "2026-03-02", "detected": 1, "resolved": 1 }
]
}Automation
From memory to working AI config in one command.
Generate CLAUDE.md, AGENTS.md, and .cursor/rules from your project memory. Define reusable skills that encode how your team solves recurring problems.
AI config generation
Generate configuration files for Claude, Cursor, Codex, Copilot, and Windsurf directly from your project memory and conventions.
Skills — reusable procedures
Create and share procedures that encode how your team handles recurring implementation patterns. Install from the public registry.
Agent tasks
Run structured tasks with safe tools — HTTP requests, file operations, and memory writeback — from a single API call.
Template and skill composition
Combine core, strict, and review templates with language-specific skills to generate precisely calibrated AI instructions.
# CLI
cv scaffold \
--project my-project \
--targets claude,cursor \
--skills go,api-design
# Generates CLAUDE.md and .cursor/rules
# with guardrails + skills + project memory
# SDK
await cv.scaffold("my-project", {
targets: ["claude", "cursor"],
templates: ["core", "strict"],
skills: ["go", "api-design"],
});
# Create a reusable skill
await cv.createSkill({
name: "go-error-handling",
trigger_description: "When writing Go error handling",
procedure: `
1. Always wrap errors with fmt.Errorf("...: %w", err)
2. Use errors.Is() and errors.As() for checking
3. Never discard errors with _
`,
language: "go",
});Insights
Track how your team learns with AI.
Every AI tool call is passively monitored for concept encounters. Session digests, skill strength scores, and team heatmaps show how your team is growing.
Concept encounter tracking
Passively detects coding concepts in every AI interaction — Go patterns, React hooks, SQL techniques — without any manual input.
Session digests
At the end of each session, a 3-paragraph digest summarises what was accomplished, key decisions, and growth signals.
Skill strength scores
Each concept gets a strength score that grows with engaged encounters and decays over time — highlighting real weak spots.
Team analytics
Heatmaps and engagement bars across your whole team. See which concepts your team encounters vs. which ones they truly engage with.
// Developer skill profile
GET /api/v1/pulse/profile
{
"skills": [
{
"concept_tag": "go/error-wrapping",
"concept_label": "Go error wrapping with errors.Is",
"encounter_count": 24,
"engaged_count": 18,
"strength": 0.82,
"first_seen_at": "2026-01-15T10:00:00Z",
"last_seen_at": "2026-03-08T14:30:00Z"
},
{
"concept_tag": "sql/transactions",
"concept_label": "SQL transaction block",
"encounter_count": 6,
"engaged_count": 1,
"strength": 0.21 // ← weak spot
}
],
"recent_sessions": [...],
"trends": [...]
}Works with every AI tool
One API key. Connect any tool in minutes. See setup guides →