This repository contains the public source for cortrix.ai, the official website for Cortrix. We welcome issues and pull requests for website content, broken links, accessibility, layout bugs, and documentation clarity.
This repository is public so the community can inspect cortrix.ai and suggest improvements. It is not an open source repository. No reuse license is granted for cortrix.ai, website content, website source files, brand assets, the Cortrix name, Cortrix logos, brand identifiers, or product messaging.
Cortrix product roadmap, security reports, brand usage, and unapproved product claims are handled through the governance and security channels described in this repository.
Build the Blog and shared components, then open index.html in a browser or serve this directory with any static file server:
node scripts/build-blog.mjs
node scripts/render-static-components.mjs
python3 scripts/preview.py --port 4190 --bind 127.0.0.1The canonical site header is maintained in components/site-header.html. The renderer writes that template into every index.html between the include:site-header markers. The generated pages retain complete static navigation markup so search engines, AI crawlers, accessibility tools, and clients without JavaScript can read the same header.
Run the renderer after changing the template:
node scripts/render-static-components.mjsVerify that every page is synchronized:
node scripts/render-static-components.mjs --checkVercel runs the Blog generator followed by the shared-component renderer, then serves the repository root as the static output.
The Blog uses small source files and no third party dependencies or CMS. Add an HTML body fragment under content/blog/, then add its metadata to content/blog/posts.json. Every entry needs slug, title, description, topic, bodyFile, and readMinutes. Set kind to release for product updates; omitted kind values remain compatible with the existing research notes and are treated as paper. Optional publishedAt and updatedAt values must use an ISO date or timestamp; leave them out until the Blog publication dates are confirmed.
Research notes additionally require paperTitle, paperYear, paperUrl, paperAuthors, and seriesOrder. Release updates instead require releaseTag, releaseDate, releaseUrl, evidenceUrl, image, and imageAlt; featured may select one release for the Latest release section. releaseDate records when the software release was published and does not become the Blog article’s datePublished.
The HTML fragment should begin with the article introduction and use h2 headings for the table of contents. Keep original mechanism diagrams under /assets/blog/figures/ and reference them with paths starting at the site root. Use a figure with figcaption whenever an image needs context or attribution.
Generate the Blog index, article pages, RSS feed, sitemap entries, and the Blog section in llms.txt before previewing:
node scripts/build-blog.mjs
node scripts/render-static-components.mjsCheck that generated output and the shared header are current:
node scripts/build-blog.mjs --check
node scripts/render-static-components.mjs --checkEach research note must identify its source paper, its authors, and a stable publication URL. Write an independent explanation and use original diagrams. Do not assume that a paper available on arXiv permits reuse of its text or figures: check the license of the exact version and any third party material. The arXiv reuse guide explains the distinction. Record permission and attribution before adding reused material; the initial five notes do not reproduce paper figures or PDFs.
Each release update must link to its public source release and supporting evidence without presenting release metadata as paper metadata. Keep release updates outside the numbered research series and its previous and next navigation.
The generator stops when a Blog directory is no longer listed in the metadata. Decide explicitly whether an existing article needs removal or a redirect before changing a published URL. It does not delete unlisted directories.
Use unique titles and descriptions that match visible content, stable canonical URLs, and meaningful internal links. The homepage explains semantic storage, agent storage, context storage, and memory storage as workflow terms without expanding capability claims. Article source citations remain distinct from Blog authorship. RSS and Sitemap entries are generated from the same article metadata. Search indexing and AI citations can only be measured after publication; no ranking outcome is implied.
The preview server and deployment routes exclude authoring fragments and tooling from page access. Local previews send an X-Robots-Tag noindex header; published pages retain their own index policy. Run the site checks with:
python3 scripts/check-site.pyThe /semantic-storage/ page explains the concept independently from the Blog. Keep its definition scoped to this guide and describe current Cortrix capabilities using the product evidence pages. It is linked from the shared navigation, footer, and relevant article text. Architecture follows Semantic Storage in the primary navigation and also remains available from the homepage and footer.
The Blog uses the homepage color tokens. Its five research notes are Scott’s personal interpretations of research, not descriptions of papers being implemented in Cortrix; release updates use a separate description and source treatment. The contents list can be expanded when needed. Images open in a page dialog with a close button and Escape support; article titles and reading links continue to navigate to the article.