An Open Source C++ Web Framework

Get Started

Version: 1.3.0
License: Apache-2.0 License

Run It Anywhere

Oat++ has zero-dependencies and it's easy-portable with a wide range of supported platforms.

Build Robust APIs

With Oat++ Simple-API it's easy and fun to build flexible and robust APIs. See high-level overview.

Handle 5M Connections

With Oat++ Async-API you can handle over 5 Million concurrent connections on a single server. See benchmark.

Access Databases

Oat++ ORM provides an easy and unified way to access databases. Read more.

Keep Code Consistent

Oat++ relies on Object-Mapping throughout its codebase to ensure consistency of APIs and data models. Read more.

Document Your APIs

Automatically document endpoints with Swagger-UI and OpenAPI 3.0.0. Read more.

How It Looks

ENDPOINT("POST", "/users", createUser, 
         BODY_DTO(Object<UserDto>, userDto)) 
  return createDtoResponse(Status::CODE_200, m_database->createUser(userDto));

Oat++ Users

Join Our Community

Use Oat++

Start using Oat++ and share your experience. Get Started!


Oat++ is an open-source project and your contributions matter. Contribute!

Share Your Feedback

If you are using Oat++, we would love to hear from you! contact@oatpp.io

Frequently Asked Questions

Q: "Oat++" name?

  • "Oat" is something light, organic, and green. It can be easily cooked and consumed with no effort.
  • "++" gives a hint that it is "something" for C++.

Q: What is the main area of Oat++ application?

Oat++ is used for many different purposes, from building REST APIs that run on embedded devices to building microservices and highly-loaded cloud applications.

But the majority of use cases appears to be in IoT and Robotics.

Q: How portable is Oat++?

Theoretically, Oat++ can be easily ported everywhere where you have threads and network stack. With an additional comparably small effort, it can be ported almost everywhere depending on how much you strip it and what would be the final binary size.

See supported platforms for additional info.

Q: What is the size of a minimal Oat++ application?

About 1Mb, depending on C/C++ std-lib and oatpp version.

Q: Which Oat++ API to choose, Simple or Async?

Always choose Simple API wherever possible. Simple API is more developed and makes the code cleaner.

Async API is designed for small, specific tasks that run at high concurrency levels ex.:

  • Serving file downloads to a large number of concurrent users (1K users and more).
  • Streaming to a large number of clients (1K or more).
  • Websocket Chat servers.

For all other purposes use simple API.