The Jac Programming Language and Jaseci Stack
AI-First Programming Language

Build Intelligent
Software with
Jac

Jac supersets Python with AI-first constructs, object spatial programming, and scale-native abstractions. One language from prototype to production.

Backed by

NvidiaUniversity of MichiganNSF

Why We Built Jac

Modern software demands AI integration, graph-based data models, and instant scalability. Existing languages were never designed for this.

AI Without Prompt Engineering

Replace function bodies with LLMs using Meaning Typed Programming. The function signature IS the specification.

Object-Spatial Programming

Model data as traversable graphs with nodes and walkers. Build AI agents that navigate knowledge naturally.

Full-Stack in One Language

Write React components, backend APIs, and AI integrations in a single .jac file. No context switching.

Zero to Infinite Scale

Deploy locally with jac start, scale to Kubernetes with one flag. Same code, auto-provisioned infrastructure.

See the Difference

Compare Jac with Python side by side. Same functionality, radically different expressiveness.

Learn more
ai_sentiment_analysis.jac
import from byllm { Model, Image }

glob llm = Model(model_name="gpt-4o");

# One tiny object replaces a giant schem
obj MemoryDetails {
    has who: list[str];
    has what: str;
    has where: str;
}
sem MemoryDetails = "Extract people, event, place from the photo";

def extract_memory_details(
    image: Image, city: str
) -> MemoryDetails by llm(); # Magic happens

with entry {
    img = Image("image.png");
    details = extract_memory_details(img, "Paris");
    print(details);
}

Jac Supersets Python

Use any Python package directly. Jac compiles to Python, so your entire ecosystem works out of the box.

Python packages in Jac
import:py from math { sqrt }

can hypotenuse(a: float, b: float) -> float {
    return sqrt(a**2 + b**2);
}

with entry {
    print(hypotenuse(3.0, 4.0));
}
npm packages in Jac
import:js from react { useState }
import:js from "react-dom/client" { createRoot }

obj Counter :react.Component: {
    can render {
        count, setCount = useState(0);
        return <div>
            <h1>Count: {count}</h1>
            <button onClick={|| setCount(count + 1)}>
                Increment
            </button>
        </div>;
    }
}
Jac Superset Diagram

Full-Stack with jac-client

Build complete web applications in a single .jac file. React components, backend logic, and AI integrations unified.

app.jac
import:js from react { useState }

node Todo {
    has title: str;
    has done: bool = False;
}

walker add_todo {
    has title: str;
    can create with `root entry {
        new_todo = here ++> Todo(title=self.title);
        report new_todo;
    }
}

obj TodoApp :react.Component: {
    can render {
        todos, setTodos = useState([]);
        input, setInput = useState("");

        return <div class="app">
            <h1>Todo App</h1>
            <input value={input}
                   onChange={|e| setInput(e.target.value)} />
            <button onClick={|| {
                add_todo(title=input) spawn root;
                setInput("");
            }}>Add</button>
            {todos.map(|t| <div>{t.title}</div>)}
        </div>;
    }
}
1 Write
vim app.jac

Full-stack app in one file

2 Run
jac start app.jac

Local development server

3 Deploy
jac start app.jac --scale

Production with auto-infra

Scale with jac-scale

Same code runs locally and at production scale. No infrastructure changes, no DevOps complexity.

jac start app.jac
Local SQLite Hot reload Debug mode

Auto Database

SQLite in dev, PostgreSQL in prod. No config needed.

Auth Built-in

User authentication and sessions out of the box.

API Generation

Walkers become REST endpoints automatically.

Zero DevOps

No Dockerfile, no K8s manifests, no infrastructure setup.

Get Started

📘

Jac Lang

The core language that supersets Python and JavaScript. Build AI systems with graph-based Object-Spatial Programming.

Read Handbook

Key Features

🐍

Supersets Python & JavaScript

Jac is a true superset of both Python and JavaScript. Use any PyPI package for backend logic and any npm package for frontend components.

The Journey

2020

Research Begins

Jaseci started as a research project at the University of Michigan, exploring AI-first programming paradigms.

2021

First Public Release

Jaseci 1.0 released with graph-based programming model and AI integration capabilities.

2022

Growing Community

Open-source community grows. Multiple research papers published on data spatial programming.

2023

Jac Language

Jac programming language launched as a Python superset with native AI constructs.

2024

Full Stack & Scale

jac-client and jac-scale introduced, enabling full-stack development and zero-config deployment.

2025

Production Ready

Enterprise adoption begins. Jac ecosystem matures with tooling, IDE support, and comprehensive documentation.