Code quality API for agents, bots, and pipelines.
Codalog is an API-first layer for inspecting submitted code against curated good-code exemplars, storing samples, and preparing for stronger semantic retrieval later. It scores structure and maintainability now, while emitting fingerprints you can feed into a larger exemplar memory over time.
Working Views
These Playwright-captured images come from the live static Codalog page so the landing page can show actual working states without turning into an app UI.
What V1 Does
Codalog v1 is intentionally thin: API endpoints, stable response shapes, a curated-good exemplar starter corpus, and a docs-style landing page. No dashboard, no sample management console, and no automatic mirroring of third-party datasets.
Analysis Response Shape
Every analysis response includes `summary`, `heuristics`, `fingerprint`, `signals`, `similarity`, `exemplar_alignment`, and `storage_hints`.
`storage_hints` carries the default namespace, normalized tags, text query terms, and an STM-ready fingerprint.
Persistence Model
Samples are stored in existing owner-scoped memory. Default namespaces follow `codalog:samples:<language>`.
Ownerless self-serve agent tokens must use private visibility when storing samples.
Curated Exemplar Path
V1 defaults to a curated good-code corpus by language. Public-source expansion stays a backend concern, not a landing-page feature.
The emitted fingerprint is designed so semantic tensor memory or vector ranking can be layered in later without redesigning the external API.
Example Requests
These examples are enough to wire Codalog into CI, a repo bot, a browser extension, or another agent.
Inspect Exemplar Coverage
curl -s https://mnemolog.com/api/codalog/catalog
Analyze Submitted Code
curl -s https://mnemolog.com/api/codalog/analyze \
-H 'Content-Type: application/json' \
-d '{
"language": "typescript",
"filename": "collect.ts",
"code": "export function collectVisibleItems(items: Item[]): Item[] {\\n return items.filter((item) => item.isVisible);\\n}"
}'
Store a Private Sample
curl -s https://mnemolog.com/api/codalog/samples \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $MNA_TOKEN" \
-d '{
"visibility": "private",
"language": "python",
"filename": "chunked.py",
"code": "def chunked(items, size):\\n if size <= 0:\\n raise ValueError(\\"size must be positive\\")\\n return [items[i:i + size] for i in range(0, len(items), size)]"
}'
Analyze Against Supplied References
curl -s https://mnemolog.com/api/codalog/analyze \
-H 'Content-Type: application/json' \
-d '{
"language": "javascript",
"code": "function slug(value) { return String(value).trim().toLowerCase(); }",
"references": [
{
"label": "reference-slugify",
"language": "javascript",
"code": "function slugify(input) { return String(input || '').trim().toLowerCase(); }"
}
]
}'
Example Response
Codalog returns a stable shape intended for machines first and humans second.
{
"analysis_kind": "style_quality_inference",
"disclaimer": "Codalog scores code quality and style consistency. It does not prove human authorship or AI authorship.",
"summary": {
"language": "typescript",
"filename": "collect.ts",
"classification": "clean_human_leaning",
"clean_human_code_score": 86,
"confidence": 0.82
},
"heuristics": {
"readability": 88,
"consistency": 84,
"maintainability": 85,
"human_likeness": 84
},
"fingerprint": {
"line_count": 4,
"non_empty_line_count": 4,
"average_line_length": 34.5,
"blank_line_ratio": 0,
"comment_density": 0,
"long_line_count": 0,
"duplicate_line_ratio": 0,
"function_count": 1,
"import_count": 0,
"indent_style": "spaces",
"mixed_indent_lines": 0,
"max_indent": 2,
"identifier_stats": {
"unique_count": 6,
"total_count": 9,
"snake_case": 0,
"camel_case": 2,
"pascal_case": 1,
"single_letter": 0,
"top_identifiers": [
{ "identifier": "items", "count": 2 },
{ "identifier": "collectVisibleItems", "count": 1 }
]
},
"first_signal_line": "export function collectVisibleItems(items: Item[]): Item[] {"
},
"signals": {
"strengths": [
"Identifier naming is mostly consistent.",
"Low repeated-line ratio suggests the code is not heavily copy-pasted."
],
"concerns": []
},
"similarity": {
"compared_reference_count": 3,
"reference_strategy": "curated_good_corpus",
"nearest_references": [
{
"id": "good-ts-format-latency",
"label": "Typed formatting helper",
"source_kind": "curated",
"similarity": 0.412,
"token_similarity": 0.391,
"structure_similarity": 0.462
}
]
},
"exemplar_alignment": {
"pool_size": 3,
"compared_exemplar_count": 3,
"coverage_confidence": "low",
"alignment_score": 0.412,
"verdict": "partially_aligned",
"nearest_good_examples": [
{
"id": "good-ts-format-latency",
"label": "Typed formatting helper",
"source_kind": "curated",
"similarity": 0.412,
"token_similarity": 0.391,
"structure_similarity": 0.462
}
]
},
"storage_hints": {
"namespace": "codalog:samples:typescript",
"tags": ["codalog", "language:typescript", "quality:clean_human_leaning", "alignment:partially_aligned"],
"search_query": "items collectvisibleitems",
"stm_ready_fingerprint": {
"language": "typescript",
"identifiers": ["items", "collectvisibleitems"],
"line_shapes": ["A A(A: A[]): A[] {", "A A.A((A) => A.A);", "}"]
}
}
}
Curated Exemplar Coverage
The public product surface is centered on the curated good-code pool Codalog actually uses today, not on every public dataset that might be useful later.
Starter Language Coverage
The initial curated pool covers JavaScript, TypeScript, Python, Go, Rust, Java, and C#. Weak alignment in those languages means review is recommended, not that a snippet is automatically bad.
Source Notes Stay In Docs
Background public datasets and provenance caveats still matter, but they now belong in `/api/codalog/catalog` and internal docs instead of the main product landing page.