Reference#
The complete technical reference for Jac -- pure lookup, organized by subject. If you're new, start with Build Anything and the guided "I like to build…" tracks, or work through the Learn tutorials. Come here when you need the exact syntax, option, or API.
How to use this reference#
- Looking up language syntax? → Language below.
- Looking up a
jaccommand? → CLI Commands. - Configuring a project? → Configuration (
jac.toml). - Wiring AI, deployment, or the full-stack client? → Capabilities and Plugins.
Language#
The core language -- syntax, types, objects, graphs, concurrency, and native compilation.
- Foundation -- syntax, types, literals, variables, scoping, operators, control flow, pattern matching
- Primitives & Codespace Semantics -- values, the
sv/cl/nacodespaces - Functions & Objects --
canvsdef, OOP, inheritance, enums, impl blocks - Access Modifiers --
:pub/:protect/:privacross member, module, and service contexts - Object-Spatial Programming -- nodes, edges, walkers,
visit/report/disengage, graph queries - Concurrency -- async/await,
flow/wait, parallel operations - Comprehensions & Filters -- filter/assign comprehensions, typed filters
- Walker Patterns -- the
.reportsarray, response patterns, nested spawning - Appendices -- keyword & operator reference, grammar, gotchas, migration
- Syntax Cheatsheet -- one-page lookup
- Native Compilation -- compiling to native binaries and C-ABI shared libraries
Capabilities and Plugins#
AI, deployment, and the full-stack frameworks. byLLM and Scale are built into the jac binary (capability-gated); jac-client and jac-desktop are first-party plugins that ship with core.
- byLLM --
by llm(), model config, tool calling, streaming, multimodal, agentic patterns - Scale -- production serving, storage, and Kubernetes (built into
jaclangcore): - Overview · HTTP API & Walkers · Data & Storage · Kubernetes & Operations
- jac-client -- codespaces, components, state, routing, auth, npm packages, web/PWA/mobile targets
- jac-desktop -- native desktop window, sidecar bundling,
[desktop]config
Python Integration#
- Interoperability -- importing and using Python packages in Jac, the adoption patterns
- Library Mode -- using Jac from pure Python (
jaclang.lib,jac2py) - Import Anything -- importing from PyPI, npm, and C across the codespaces
Developer Workflow#
- CLI Commands -- every
jacsubcommand with options and examples - MCP Server -- expose your project to AI coding assistants via
jac mcp - Agent Skills & MCP --
jac guide, exportable skills, and when to use each - Plugin Authoring -- write your own CLI/runtime/config plugin
- Configuration --
jac.toml, profiles, environments - Publishing Packages -- building wheels and npm tarballs
- Persistence & Schema Migration -- the
rootgraph, schema drift, migrations - Errors & Warnings -- diagnostic codes
- Code Organization · Testing
Quick start#
# 1. Install the jac binary
curl -fsSL https://raw.githubusercontent.com/jaseci-labs/jaseci/main/scripts/install.sh | bash
# 2. Scaffold a new project (pick a kind -- see Build Anything)
jac create myapp --kind web-app
# 3. Run it
jac start
main.jac is the default entry point; pass a different name explicitly (e.g. jac start app.jac). See Installation for details.
Using Jac with AI coding assistants#
Jac is a young language, so AI assistants may hallucinate outdated syntax. The Jaseci team maintains an official condensed reference sized for LLM context windows: jaseci-llmdocs. Add it to your assistant's persistent context:
| Tool | Context file | Quick setup |
|---|---|---|
| Claude Code | CLAUDE.md (or ~/.claude/CLAUDE.md) |
cat candidate.txt >> CLAUDE.md |
| Gemini CLI / Antigravity | GEMINI.md |
cat candidate.txt >> GEMINI.md |
| Cursor | .cursor/rules/jac-reference.mdc |
mkdir -p .cursor/rules && cp candidate.txt .cursor/rules/jac-reference.mdc |
| OpenAI Codex | AGENTS.md (or ~/.codex/AGENTS.md) |
cat candidate.txt >> AGENTS.md |
For a live, always-current option, point your assistant at the built-in MCP server (jac mcp) instead. Pull a fresh candidate.txt when you upgrade Jac.