Application Devs

A team-centric standard for building cloud native apps.

Open Application Model [OAM] describes a model where developers are responsible for defining application components.

Application Ops

While application operators are responsible for creating instances of those components and assigning them application configurations.

Infrastructure Operators

And infrastructure operators are responsible for declaring, installing, and maintaining the underlying services that are available on the platform.

Read the Spec

Check out Rudr for a Kubernetes implementation of the specification. ↓


Cloud-native development

Microservices Are Complicated.

  1. Developers have to spend more and more time on their app’s infrastructure tooling - images, registries, versioning, etc.
  2. Security, performance, and configuration concerns are becoming more blurred with the app development processes.
  3. Decisions about where you run your microservices can impact on how you configure and develop your app.

The OAM Way

A New Application Model

  1. Manage your apps like you manage your teams - with roles and scopes for apps, free of infrastructure.
  2. An opinionated workflow that separates the concerns of developers & operators, whilst providing flexibility and clarity.
  3. Runs anywhere - a unified approach that works across cloud platforms and edge devices.

OAM is platform-agnostic. Read the Intro doc for more background and user stories.



Create a component:

kind: ComponentSchematic
  name: helloworld-python-v1
  name: helloworld-python
    - name: foo
      image: oamdev/helloworld-python:v1
        - name: TARGET
          fromParam: target
        - name: PORT
          fromParam: port
        - type: tcp
          containerPort: 9999
          name: http
    - name: target
      type: string
      default: World
    - name: port
      type: string
      default: "9999"


Show a component and a config in one file:

kind: ComponentSchematic
  name: alpine-forever-v1
    - name: message
      type: string
      required: false
    - name: unused_integer
      type: number
      required: false
      default: 5678
    - name: runner
      image: technosophos/alpine-forever:latest
        - name: FOO
          value: bar
          fromParam: message
        - name: UNUSED
          value: "1234"
          fromParam: unused_integer
kind: ApplicationConfiguration
  name: example-env-vars
    - name: alpine-forever-v1
      instanceName: example-alpine-forever
        - name: message
          value: Hello World



Rudr: A Kubernetes Implementation of the Open Application Model

Rudr takes an incremental approach to solving problems. The architecture is a set of plugins for Kubernetes which allow OAM specifications to be implemented and deployed on clusters with native APIs (you still use kubectl).

This allows app developers to focus on building OAM components, app operators to focus on operational capabilities through the OAM app config and infra operators to focus on Kubernetes. By leveraging the Open App Model, users now have a framework to define their apps on their Kubernetes clusters.

Currently, Rudr will leverage the defined trait to accomplish the task. This gives the freedom to use whatever underlying tool the user wants while providing a trait that focuses on the functionality and not the technology. In the future, Rudr might provide a set of default technologies to provide the functionality desired by a trait.

Alibaba supports Open Application Model in their offerings:

  • Alibaba Enterprise Distributed Application Service (Available) - A PaaS platform for a variety of application deployment options and microservices solutions. (More info)
  • Alibaba Resource Orchestration Service (Available) - Provides developers and system managers with a simple method to create and manage their Alibaba Cloud resources. (More info)

Upcoming Implementations

A variety of parterns working on adding support for Open Application Model in their offerings:

  • Rainbond - Enterprise application cloud operating system. (More Info)


Mailing List!forum/oam-dev
Dev Meetings
Bi-weekly (Starting October 22nd), Tuesdays 10:30AM PST
APAC Friendly Dev Meetings
Bi-weekly (Starting October 28th), Mondays 4:30PM PST
Meeting invite
Meeting notes
Notes doc
IM Channel