The first programming language designed for the age of AI.

We gave machines the ability to reason, decide, and act. Then we kept building them with languages that can't see any of it happening.

curl -sSf https://install.corvid-lang.org | sh
corvid check
$ corvid check main.cor
prompts
tools
approvals
budgets
confidence
grounding
citations
model_routing
streaming
replay
verification
11 constructs checked. 0 errors. Not libraries. Language.
$
Problem

You already know this feeling.

It's 2am. Something your AI did woke you up. Maybe it issued a refund it shouldn't have. Maybe it sent a patient the wrong triage recommendation. Maybe it pushed a deployment that should have waited for review.

You trace it back. The prompt was fine. The policy was in a separate file. The worker just... executed. Somewhere between three languages and a config nobody updated, the guardrail disappeared.

Because your language had no idea what your program was trying to do.

Software changed. Languages didn't. Until now.

See it happen

The compiler catches what you miss.

01

Write a medical triage agent.

Define the tools, their effects, and the agent. The approve line is required before any dangerous call.

triage.cor
effect clinical_action:
    trust: human_required

tool prescribe(id, med) -> Order dangerous

agent triage(p: Patient) -> Assessment:
    result = assess(p)
    if result.urgency > 0.9:
        approve Prescription(p.id, result.med)
        prescribe(p.id, result.med)
    return result
02

Remove the safety check.

Delete the approve line. In Python, nothing happens. In Corvid, the compiler refuses to build.

triage.cor
effect clinical_action:
    trust: human_required

tool prescribe(id, med) -> Order dangerous

agent triage(p: Patient) -> Assessment:
    result = assess(p)
    if result.urgency > 0.9:
        prescribe(p.id, result.med)
    return result
E0101: dangerous tool `prescribe` called without prior `approve`
03

Add it back. It compiles.

The approval is not a suggestion. It is a type-system requirement. Present or absent. Compiles or doesn't.

triage.cor
effect clinical_action:
    trust: human_required

tool prescribe(id, med) -> Order dangerous

agent triage(p: Patient) -> Assessment:
    result = assess(p)
    if result.urgency > 0.9:
        approve Prescription(p.id, result.med)
        prescribe(p.id, result.med)
    return result
✓ All checks passed.
curl -sSf https://install.corvid-lang.org | sh View source
Solution

AI belongs in the language.

Corvid starts from a simple premise: if your program reasons, decides, and acts, the compiler should see all three.

Effects are not flat tags. Cost, trust, reversibility, data, latency, and confidence each compose with their own algebra. The compiler enforces each independently.

This isn't a framework you import. It's the language itself.

Visible intent.What the system is trying to do is in the source. Typed, checked, and traceable.
Explicit boundaries.What it's allowed to do is a compile-time guarantee the program cannot violate.
Predictable behavior.Because the compiler sees reasoning, decision, and action in one pass.
Effect algebra

Six dimensions. Six composition rules.

Cost
$0.05
Sum
Trust
human
Max
Reversible
false
AND
Data
pii
Union
Latency
200ms
Sum
Confidence
0.92
Min
What the compiler checks

Built into the language.

Compile-time budgets

Exceed the cost bound and the code won't compile.

@budget($0.10)
agent bounded(text) -> String:
    return classify(classify(text))

Confidence gates

Low confidence routes to approval automatically.

@min_confidence(0.90)
agent bot(q) -> String:
    return search(q)

Grounded provenance

The typechecker rejects returns without a retrieval chain.

agent research(id) -> Grounded<String>:
    return fetch_doc(id)

Strict citations

Compiler proves grounding. Runtime checks the model response.

prompt answer(ctx: Grounded) -> Grounded:
    cites ctx strictly

Model routing

Cheap models first. Escalate on low confidence.

prompt classify(q) -> String:
    progressive:
        cheap below 0.80
        expensive

Replay and receipts

Executions become reviewable, diffable evidence.

@deterministic
@replayable
agent classify(t) -> String
Examples

One pattern. Every domain.

Wherever AI makes a consequential decision, the same primitives apply.

Finance

Refund agent

Cost, trust, and reversibility dimensions. The compiler requires approval and enforces the budget.

dangerous + @budget + @trust
refund.corfinance
effect transfer_money:
    cost: $0.50
    trust: human_required
    reversible: false

tool issue_refund(id) -> Receipt dangerous

@budget($1.00)
agent refund(id) -> Receipt:
    approve IssueRefund(id)
    return issue_refund(id)
Healthcare

Medical triage

Trust and PII dimensions. The compiler requires clinician approval and tracks data flow.

dangerous + data: pii
triage.corhealthcare
effect clinical_action:
    trust: human_required
    data: pii

tool prescribe(id, med) -> Order dangerous

@trust(human_required)
agent triage(p) -> Assessment:
    r = assess(p)
    if r.urgency > 0.9:
        approve Emergency(p.id)
        prescribe(p.id, r.med)
    return r
Support + RAG

Grounded support

The compiler verifies grounding and that citations trace back to sources.

Grounded<T> + cites strictly
support.corrag
tool search(q) -> Grounded<String>

prompt answer(q, ctx: Grounded) -> Grounded:
    cites ctx strictly
    """Answer {q} using ONLY: {ctx}"""

agent support(q) -> Grounded:
    return answer(q, search(q))
DevOps

Deploy agent

Both deploy and rollback are dangerous with irreversible effects.

dangerous + reversible: false
deploy.cordevops
tool deploy(sha) -> Status dangerous
tool rollback(env) -> Status dangerous

@trust(human_required)
agent deploy_agent(c) -> Status:
    if review(c).safe:
        approve Deploy(c.sha)
        return deploy(c.sha)
    approve Rollback("prod")
    return rollback("prod")
GitHub Join the discussion curl -sSf https://install.corvid-lang.org | sh
Community

For the ones who care what their code does after they ship it.

Corvid is open source, built in public, shaped by engineers who've stayed up too late debugging an agent that did something it shouldn't have.

We're early. The community is small. That's the point. You're not joining a crowd. You're shaping a foundation.

If you've ever looked at your agent code and thought "I can't actually prove this is safe", you're who we built this for.

The next era of software needs a new foundation.

We're building it. Come build with us.

Build with Corvid
curl -sSf https://install.corvid-lang.org | sh
Join the discussion Read the effect spec