Ecosystem
Everything that speaks Carve, grouped by role. All of it lives under the markup-carve organization. For live corpus conformance numbers of the reference parsers, see Implementation Comparison.
Parsers
The engines that turn Carve source into an AST and HTML. Conformance is measured against the shared spec corpus; the bar for "a Carve implementation" is Tier-1 core (native syntax) - see Build Your Own Implementation.
| Project | Language | Status |
|---|---|---|
| carve-js | TypeScript | Reference implementation. Tier-1 corpus passing. |
| carve-rs | Rust | Parser + HTML renderer with a carve CLI. Tier-1 corpus passing. |
| carve-php | PHP | Forked from djot-php; Carve syntax implemented, corpus passing. Powers the PHP sandbox and wp-carve. |
| carve-wasm | WASM | Browser/Node bindings for carve-rs. Early. |
Language bindings
Higher-level bindings and satellite packages that wrap one of the engine implementations.
| Project | Language | Notes |
|---|---|---|
| carve-go | Go | Pure-Go module via wazero + WASI over carve-rs. |
| carve-py | Python | PyO3 bindings over carve-rs. Enables MkDocs, Pelican, and other Python pipelines. |
| carve-rb | Ruby | Native gem via magnus over carve-rs. |
| carve-components | React / Vue | UI components for rendering Carve markup in the browser. |
| carve-wysiwyg | TypeScript | WYSIWYG editor / live sandbox (Tiptap + carve-grammars). |
Editor support
Syntax highlighting, structural editing, and diagnostics inside editors.
| Project | Target | Status |
|---|---|---|
| vscode-carve | VS Code | Highlighting, snippets, live preview. |
| emacs-carve | Emacs | Major mode for .crv files. |
| vim-carve | Vim / Neovim | Syntax highlighting + tree-sitter grammar. |
| sublime-carve | Sublime Text | Syntax package for .crv files. |
| sublime-carve-lsp | Sublime Text | LSP helper package - diagnostics, hover and symbols via the Carve language server. |
| helix-carve | Helix | Editor support for Carve. |
| intellij-carve | JetBrains IDEs | Highlighting, live preview, and export for IntelliJ, PhpStorm, etc. |
| zed-carve | Zed | Editor support. |
| tree-sitter-carve | Tree-sitter | Grammar for highlighting and structural editing. |
| carve-lsp | LSP | Language server - syntax diagnostics, Djot/Markdown collision hints. Early. |
Framework integrations
Carve embedded in another tool or framework.
| Project | Host | Status |
|---|---|---|
| mkdocs-carve | MkDocs | Plugin: renders .crv pages in MkDocs documentation sites. |
| jekyll-carve | Jekyll | Converter plugin for .crv pages. |
| eleventy-carve | Eleventy (11ty) | Plugin for processing Carve source files. |
| astro-carve | Astro | Integration for importing .crv pages. |
| hugo-carve | Hugo | Preprocessor that converts .crv content to HTML, via carve-go. |
| symfony-carve | Symfony | Bundle to render Carve markup to HTML via carve-php. |
| symfony-carve-demo | Symfony | Demo app showcasing the symfony-carve bundle. |
| laravel-carve | Laravel | Integration with Blade directives, services, validation, and caching. |
| laravel-carve-demo | Laravel | Runnable app demonstrating every feature of laravel-carve. |
| shopware-carve | Shopware 6 | Twig filters, CMS element, product/category fields, admin live preview, mail, and a CLI. |
| wp-carve | WordPress | Plugin on the carve-php engine - live preview, multi-format paste, REST API. |
| carve-grammars | Tiptap | Editor kit and Carve serializer. |
| vite-plugin-carve | Vite | Import .crv documents as rendered HTML. Early. |
PDF / output
Render Carve documents to formats beyond HTML.
| Project | Output | Notes |
|---|---|---|
| carve-pdf | Render .crv documents to clean, paginated PDFs. | |
| carve-hexapdf | Carve to PDF via the pure-Ruby HexaPDF engine (over carve-lang / carve-rb). | |
| pandoc-carve | LaTeX, Typst, DOCX, PDF, ... | Carve AST to Pandoc JSON bridge; reaches every pandoc writer and makes {=latex}-style raw spans fire. |
Format bridges
Conversions between the Carve AST and another document model, in both directions. These are keyed by bridge rather than by repository, because one of them lives inside an engine rather than in a package of its own. Why the boundary sits at the AST, and what a bridge owes its caller: Format bridges.
| Bridge | Model | Runtime | Carve to it | It to Carve |
|---|---|---|---|---|
| pandoc-carve | Pandoc AST | Node + pandoc | ✅ every pandoc writer | ✅ everything pandoc reads |
| carve-grammars | ProseMirror / Tiptap | Node | ✅ carveToProseMirror | ✅ serializeToCarve |
| carve-php | ProseMirror / Tiptap | PHP | ✅ ProseMirrorRenderer | ✅ ProseMirrorToCarve |
The same editor model is reached from two runtimes on purpose: an editor needs the model in whatever runtime the application already has. The carve-php pair is what lets a Tiptap editor in the browser and PHP rendering in a queue worker share one stored document with no Node runtime anywhere in the pipeline. carve-grammars owns the shared CarveKit schema and the name map both sides read.
carve-js and carve-rs have no bridge of their own; their prosemirror HTML import adapter is a different job at a different stage.
Extensions
Opt-in extensions that add non-core syntax.
| Project | Target | Notes |
|---|---|---|
| carve-php-media-embed | carve-php | Embeds audio/video from 30+ providers via dereuromark/media-embed. |
| carve-php-chat | carve-php | Renders Carve to chat-platform markup (WhatsApp, Slack, Telegram, Discord) via data-driven flavor definitions. |
Benchmarks
| Project | Description |
|---|---|
| carve-bench | Cross-engine render performance benchmarks (carve-js / carve-php / carve-rs). |
AI / agent tooling
Skills and context packs that teach AI coding agents to author Carve.
| Project | Target | Status |
|---|---|---|
| carve-skill | Claude Code / agents | Authoring skill - a syntax card, the Markdown/Djot trap list, and a carve lint validation loop so agents write valid .crv the first time. |
Resources
| Project | Description |
|---|---|
| awesome-carve | Curated list of Carve tools, libraries, and resources. |
| PHP Sandbox | Powerful live sandbox on the carve-php engine - explore syntax and extensions, inspect output, and share snippets via pastebin-style links. |
Building something new? See Build Your Own Implementation. External tools are welcome in awesome-carve even if they do not live in the org.