The Jac Programming Language and Jaseci Stack

One Language forAI-Native Full-StackDevelopment

Build complete applications with backend + frontend + AI in a single unified language. Access both PyPI and npm ecosystems, deploy from laptop to cloud with zero code changes.

Backed by Industry Leaders

Affiliation 1

Part of Nvidia Inception Program, supporting cutting edge AI innovation and scalability

Affiliation 2

Research led by faculty and researchers at University of Michigan, United States

Affiliation 3

Sponsored by NSF, advancing community driven open source ecosystem

Jac Supersets Python & JavaScript

One language with full access to both PyPI and npm ecosystems

Jac Supersets Python Diagram

Use Any Python Library (PyPI)

Use Any npm Package (React, MUI, etc.)

Full-Stack in One Language: Backend + Frontend + AI

Use any Python library for backend logic and any npm package for UI components. Build complete applications with AI capabilities, automatic scaling, and zero context switching.

NEWjac-client

Full-Stack Applications in One Language

Build complete web applications with backend, frontend, and AI - all in Jac. No more context switching between languages.

Full-Stack Todo App (One File)

What You Get

  • React components written in Jac syntax
  • Automatic state management (has → useState)
  • Direct walker invocation (no HTTP boilerplate)
  • Type safety across frontend and backend
  • Hot module replacement for fast development
  • Full npm ecosystem access (MUI, Tailwind, etc.)

Write Once

Backend logic, frontend UI, and AI - all in one .jac file

Run Locally

jac start app.jac - instant dev server

Deploy to Production

jac start app.jac --scale - same code, infinite scale

NEWjac-scale

Zero to Infinite Scale Without Code Changes

Deploy the same code locally or to Kubernetes production. No Docker, no manifests, no configuration.

Local development with hot reload
$jac start app.jac
# App running at http://localhost:8000
SQLite storage
Fast iteration
Hot module replacement

What Gets Created Automatically

Kubernetes Deployment

With load balancing & health checks

Redis StatefulSet

For caching & session management

MongoDB StatefulSet

For persistent data storage

ConfigMaps & Secrets

Secure configuration management

Persistent Volumes

Data survives restarts

Kubernetes Orchestration

Auto-scaling deployments, health checks, and service discovery

Persistent Storage

MongoDB for data, Redis for caching - auto-provisioned

Built-in Auth

JWT authentication and SSO support out of the box

Auto API Docs

Swagger/OpenAPI documentation generated automatically

Zero DevOps Required. No Dockerfile, no Kubernetes manifests, no infrastructure setup. The same code that runs on your laptop scales to production with a single flag.

AI Native Programming Language

Meaning Typed Programming with byLLM and agentic Object-Spatial Programming

Jac introduces Meaning Typed Programming - replace function bodies with AI. The function signature IS the specification. No complex prompts needed, just declare what you want.

Jac Programming

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

Traditional Programming

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
import json, base64
from datetime import datetime
from openai import OpenAI

client = OpenAI()

# --- Lots of boilerplate just to define a schema ---
tools = [{
    "type": "function",
    "function": {
        "name": "process_memory",
        "description": 
            "Extract structured memory details from the photo",
        "parameters": {
            "type": "object",
            "properties": {
                "who": {
                    "type": "array",
                    "items": {"type": "string"},
                    "description": "Names of people in the photo"
                },
                "what": {
                    "type": "string",
                    "description": "What is happening in the scene"
                },
                "where": {
                    "type": "string",
                    "description": 
                        "Location or setting of the photo"
                }
            },
            "required": ["who", "what", "where"]
        }
    }
}]

# --- The prompt has to sit here like a Novel ---
SYS_PROMPT = """
# Role and Objective
Your goal is to extract structured memory details from
referenced images and user context. Engage in a way that feels 
natural, as if you were helping someone document their 
experiences, but always return structured output.

# Instructions
- Extract details only based on the image and user input.
- Avoid hallucinations or assumptions if information is missing.
- Always call the `process_memory` tool to return results.
- Keep results short, factual, and consistent.

# Sub-categories for more detailed instructions
## First Turn
- React to the image or context briefly.
- Encourage clarification if information is incomplete.

## Field Writing (for process_memory)
- **who**: list of people, animals, or notable entities.
- **what**: concise description of the activity or event 
  (3-5 words).
- **where**: specific place, city, or landmark provided 
   or visible.

### Reasoning Steps
- If the user corrects existing information, update the fields.
- If new information is provided, add it without discarding 
  existing relevant details.
- If a field is not mentioned or visible, leave it empty.

## Response Writing
- Keep responses factual and grounded in what's visible or given.
- Never ask the user irrelevant questions.
- Use the photo context to refine details when applicable.

# Output Format
Always return JSON via the `process_memory` tool with:
- `who`: list of strings
- `what`: string (short activity/event description)
- `where`: string (location or place)
"""

with open("image.png", "rb") as f:
    image_b64 = base64.b64encode(f.read()).decode("utf-8")

# --- Verbose message construction ---
messages = [
    {"role": "system", "content": SYS_PROMPT},
    {
        "role": "user",
        "content": [
            {"type": "text", "text": "Photo took in Paris."},
            {"type": "image_url", "image_url": {
                "url": f"data:image/png;base64,{image_b64}"}
            }
        ]
    }
]

response = client.chat.completions.create(
    model="gpt-4o",
    messages=messages,
    tools=tools,
    tool_choice={
        "type": "function", 
        "function": {"name": "process_memory"}
    }
)

result = json.loads(
    response.choices[0].message.tool_calls[0].function.arguments
)

print(result)

The Jaseci Stack

Everything you need to build AI-native full-stack applications

📘

Jac Lang

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

🖥️

jac-client

Build full-stack web applications entirely in Jac. React components, state management, and backend APIs in one file.

🚀

jac-scale

Zero to infinite scale without code changes. Deploy to Kubernetes with auto-provisioned databases and authentication.

Why Jaseci

Modern software needs AI, full-stack capabilities, and seamless scaling. Jaseci delivers all three in one unified stack.

One Language, Full Stack

Write backend APIs, React frontends, and AI integrations in a single language. No more context switching between Python, JavaScript, and prompt engineering.

PyPI + npm in One Language

Access the entire Python ecosystem for backend logic and the full npm ecosystem for UI components. Use numpy, pandas, React, MUI - all in Jac.

AI Without Prompt Engineering

Replace function bodies with AI using Meaning Typed Programming. The function signature IS the specification - no complex prompts needed.

Zero to Infinite Scale

Deploy locally with one command, scale to Kubernetes production with the same code. Auto-provisioned databases, authentication, and API documentation.