

Convo-Lang
AI in plain text
Work with LLMs in plain text without gigabytes of framework dependencies. Convo-Lang provides a language and runtime that allows you to create agentic workflows and agents with support for features such as MCP, RAG, typed JSON outputs and more, all from within a single easy to read .convo file.
A .convo gives you full control over the context.
A single convo file can define reasoning contracts: typed inputs and outputs, declared guards, traceable execution. It's plain text, it's yours.
@import ./resumes/paul.md !file
@import ./resumes/jessica.md !file
@import ./resumes/freddy.md !file
> define
ProfileData = struct(
name: string
# Must have 1 or more years of experience
yearsExperience: number
# List of skill relating to bio-tech.
# Must have at least one related skill
skills: array(string)
)
@json array(ProfileData)
> user
Extract the profiles from the resumes that meet
the minimal requirementsPrompts, tools, and workflows stay close to the conversation.
Convo-Lang standardizes the prompt and agent layer without hiding model behavior inside framework callbacks or nested JSON payloads.
Plain-text conversations
A .convo file is a readable conversation source. Prompts, roles, imports, variables, and model instructions stay reviewable in source control.
Structured output
Define structs and request JSON output when an answer matters to your app. Convo-Lang keeps the output contract beside the prompt.
Tool-using workflows
Describe functions where the model uses them. Tool calls and results are appended as part of the conversation history.
> system
You are an expert day trader helping the user make
stock trades. Use the `getStock` function to get
the latest EODs before making decisions
# Returns the most recent EOD for a stock ticker
> getStock(
# Ticker of the company to get EOD for
ticker:string
) -> (
result=httpGet('https://olatyj7sylyh2nthh5l5da5fe40kkzdy.lambda-url.us-east-1.on.aws?ticker={{
encodeURIComponent(ticker)
}}')
return(result)
)
> user
How is Nvidia's stock doing@import ./stock-market-agent.convo !ignoreContent
> define
TradePick=struct(
# All compared tickers
tickers:array(string)
# Ticker of stock that seems like the best option
bestOption:string
priceUsd:number
# The reasoning behind why you pick the stock you pick
reasoning:string
)
@json TradePick
> user
Should I buy Apple or NvidiaWhen the model calls a function, Convo-Lang appends call and result messages. The conversation remains an auditable record of what the model saw and what the runtime did.