Apache libcloud - a unified interface into the cloud
====================================================

The goal of this project is to create a basic yet functional standard library
into various cloud providers.

Apache libcloud is an Apache project, see <http://libcloud.apache.org> for
more information.

For API documentation and examples, see:
 <http://libcloud.apache.org/getting-started.html>

Feedback
========

Please send feedback to the mailing list at <dev@libcloud.apache.org>,
or the JIRA at <https://issues.apache.org/jira/browse/LIBCLOUD>.
