Skip to main content


Software made

The Apexlang suite helps you start, automate, and build all your software projects.
The apex CLI gives you project templates, a task runner, and an IDL with extensible code generators to help you go from nothing to a full project in seconds.


Get Apex by running the following command


What is Apex?

Project Bootstrapper

Use apex new to start projects from boilerplate templates customized to your needs.


Task Runner

Define tasks the same way across any project and execute them with apex run.


Code Generator

Define your interfaces and types with the Apexlang IDL, then use apex generate to automatically create source code, documentation, and schemas.


Code Generators

Explore how the Apexlang interface definition language (IDL) can generate hundreds of lines in other languages automatically.

namespace "petstore"
"An OrderRequest contains the adopter ID and the ID of the pet being purchased."
type OrderRequest {
"An adopter's user id"
adopter: u32
"A pet's pet id"
pet: u32
type Order {
"The order ID."
id: UUID
"An adopter's user id."
adopter: u32
"A pet's pet id."
pet: u32
"The date the order was placed."
date: datetime
"The order status."
status: OrderStatus
"Whether or not the order is considered complete, regardless of status."
complete: bool
"A UUID v4 string"
alias UUID = string
"The OrderStatus enum represents all statuses an order can be in."
enum OrderStatus {
"The order has been placed."
placed = 0
"The order has been shipped."
shipped = 1
"The order has been canceled."
canceled = 2
"The Inventory structure contains summary information of the Pet Store's inventory."
type Inventory {
"Total number of pets sold."
sold: u32
"Total number of new pets."
new: u32
"Total number of available pets."
available: u32
"The Order service is the primary interface for ordering new pets."
interface Order {
"Query the current inventory of pets."
inventory(): Inventory
"Order a new pet. (unary operation)"
order[order: OrderRequest]: Order
"Check the status of your order."
orderStatus(id: UUID): Order