# Eclipse Concierge

Concierge is a small-footprint implementation of the OSGi Core Specification R5 standard 
optimized for mobile and embedded devices.


## User documentation

* [Getting started](getting-started.html)
* [Run Concierge from command line](concierge-commandline.html)
* [Run Concierge with Bnd(tools)](concierge-bndtools.html)
* [How to embed Concierge into a Java application](concierge-embedding.html)
* [OSGi Options supported by Concierge](options-osgi.html)
* [Concierge Options](options-concierge.html)
* [Concierge AddOn bundles](concierge-bundles.html)

## Developer documentation

* [Building Concierge from source](contributor/build-concierge.html)
* [How to contribute](contributor/contribute.html)


