---
title: About CloudStack
---

<div class="row">
	<div class="col-lg-12">
		<div class="page-header">
			<h1 id="indicators">Apache CloudStack: About</h1>
		</div>

	</div>
</div>

# What is Apache CloudStack?

Apache CloudStack is a top-level project of the Apache Software Foundation (ASF). The project develops open source software for deploying public and private Infrastructure-as-a-Service (IaaS) clouds.

CloudStack provides an open and flexible cloud orchestration platform to deliver reliable and scalable private and public clouds. What's that *mean*, exactly? 

# Features and Functionality

Apache CloudStack is a Java-based project that provides a management server and agents (if needed) for hypervisor hosts so that you can run an IaaS cloud. Some, but not all, of the features and functionality provided by CloudStack:

- Works with hosts running XenServer/XCP, KVM, Hyper-V, and/or VMware ESXi with vSphere
- Provides a friendly Web-based UI for managing the cloud
- Provides a native [API](/docs/api/)
- May provide an Amazon S3/EC2 compatible API (optional)
- Manages storage for instances running on the hypervisors (primary storage) as well as templates, snapshots, and ISO images (secondary storage)
- Orchestrates network services from the data link layer (L2) to some application layer (L7) services, such as DHCP, NAT, firewall, VPN, and so on
- Accounting of network, compute, and storage resources
- Multi-tenancy/account separation
- User management

In short, organizations can use Apache CloudStack to deploy a full-featured public or private IaaS cloud.

# People of Apache CloudStack

Apache projects are managed by a [Project Management Committee](http://www.apache.org/dev/pmc.html#what-is-a-pmc) (PMC), and much of the work is done by the project's [committers](http://www.apache.org/dev/committers.html). Note that committer status is *not* limited to developers, but is conferred to individuals who have made sustained contributions of high quality, and have shown a committment to mentoring other contributors and following [The Apache Way](http://theapacheway.com).

The current Vice President of Apache CloudStack and chair of the PMC is Sebastien Goasguen, a full list of PMC members and contributors is available on the page *[Who We Are](/who.html)*.
