---
title: Apache CloudStack Users
---

<div class="row">

<div class="col-lg-12">

<div class="page-header">

<h1 id="indicators">Apache CloudStack Users</h1>

</div>

</div>

</div>

The following organisations are known users of Apache CloudStack (or a commercial distribution of CloudStack)

Our users include many major service providers running CloudStack to offer public cloud services, product vendors who incorporate or integrate with Cloudstack in their own products, organisations who have used Cloudstack to build their own private clouds, and systems integrators that offer CloudStack related services.

## How to Add your Company in The List

If you are using CloudStack in your organisation and your company is not listed here, please send a pull request to the GitHub [page](https://github.com/apache/cloudstack-www/blob/master/source/users.markdown).

## How to Request the Entry Removal or Change

If you noticed something wrong with your entry here (or if you’d like us to remove it), please send a pull request to the GitHub [page](https://github.com/apache/cloudstack-www/blob/master/source/users.markdown) or write your concerns to the mail-list **users@cloudstack.apache.org**.

* [ActOnMagic](http://www.actonmagic.com)
* [Appcore](http://www.appcore.com)
* [AxiomIO](http://axiomio.com)
* [Ayaline](http://www.ayaline.com)
* [Itelligence Global Managed Services GmbH](https://itelligencegroup.com/de/trends/cloud-loesungen/)
* [BT](http://btcloud.bt.com)
* [CloudOps](http://www.cloudops.com)
* [Codero](http://www.codero.com)
* [DATACENTER Services](http://www.companycloud.nl)
* [DataCentrix](http://www.datacentrix.co.za)
* [Datapipe](http://www.datapipe.com)
* [DATAWAYS SA](http://www.dataways.gr)
* [Delimiter Corp](https://www.delimiter.com/)
* [En La Nube](http://www.enlanube.com.co)
* [EVRY](https://www.evry.com)
* [Exaserve](http://www.exaserve.com)
* [FiberCloud](http://www.fibercloud.com)
* [FortaCloud](http://www.fortacloud.co)
* [Heinlein Support GmbH](http://www.heinlein-support.de)
* [Imperial College](http://www.imperial.ac.uk/computing)
* [InhouseIT](http://www.inhouseit.com)
* [INRIA](http://inria.fr)
* [Kumo](http://kumo.com.co)
* [M5 Hosting Inc](http://m5cloud.com)
* [Melbourne University](http://nectar.org.au)
* [Miriadis](http://www.miriadis.com)
* [Neobitti](http://neobitti.fi)
* [NetPoint](https://netpoint-dc.com/)
* [Openminds](http://www.openminds.be)
* [Overweb srl](http://stacksquare.com)
* [Polcom](http://polcom.com.pl)
* [Reliable Networks](http://www.reliablenetworks.com)
* [Redbridge](http://www.redbridge.se)
* [SafeSwiss Cloud](https://www.safeswisscloud.ch)
* [SJC Inc](http://www.sjcloud.cn/index.xhtml)
* [Telia Latvia](http://www.telia.lv)
* [Tranquil Hosting](http://www.tqhosting.com)
* [Treestle BV](http://www.liquidns.com)
* [Tucha](http://tucha.ua)
* [University of Cologne](http://rrzk.uni-koeln.de/)
* [UPCnet](http://www.upcnet.es)
* [VDI Space, Inc](http://www.vdispace.com)
* [wirenc.com](http://www.wirenc.com)
* [Youngsoft Inc](http://youngsoft.com)
* [Zeromachine](http://zeromachine.net)

* 1 degreenorth
* 5th Planet
* Accudata Systems
* Acentrix
* ActiveEon
* Add Value
* Alcatel-Lucent
* Amdocs
* Amysta
* Angani
* Anolim
* Apalia
* Appcara Inc.
* Appcore
* Appdel
* AppFirst
* Apple
* AppSphere
* Ascenty
* ASG
* AST Modular
* Autodesk
* AXEKA
* Axelaris
* Backbone Technology
* Bechtle AG
* Bell Canada
* BigREDGroup
* British Telecom (BT)
* BT Cloud
* BT Engage IT
* Business Connexion
* CA Technologies
* CANCOM
* Caringo
* Centracon
* CentralWay
* China Telecom
* Citrix Systems
* Clavis IT
* Cloud3
* CloudCentral
* Cloudera
* Cloudian, Inc.
* CloudOps
* Cloudsoft Corporation
* Colt
* COMBIS
* COMLINE Computer + Softwarelösungen
* COMPAREX
* Comping
* Computer Services Group
* Contegix
* Control Circle
* Convergence Group
* CumuLogic, Inc
* Datacentrix
* Datapipe
* DBR360
* Dell
* Digital China Advanced Systems
* Disney
* DU
* e-Contact
* Edmunds.com
* Encloud
* Ennit
* EnterpriseDB
* Entisys Solutions
* EXA Serve
* Exoscale
* Experteq IT Services
* FPG Technologies & Solutions
* Fritz & Macziol
* Fujitsu FIP Corporation
* GigaSpaces Technologies
* Globo.com
* GreenQloud
* Gridstore
* Haaga Helia
* Hillstone Networks, Inc
* Hokkaido University
* Homeaway
* Host.net
* Hostbill
* Huawei
* IDC Frontier
* Ikoula
* IndiQus Technologies
* InMobi
* Interoute
* ISWest
* Janz IT
* Joe’s Cloud Computing
* Juniper Networks
* KDDI
* KIVBF
* KocSistem
* Kommunale Informatoinsverarbeitung Baden-Franken
* KT/Korea Telecom
* Kumo
* Kyuden Infocom
* Kyushu University
* LCS
* LeaseWeb
* Logicworks
* Makro Factory oHG
* MCPc
* Microland Ltd
* MittelstandsCLOUD
* MK Netzdienste
* NAMU Tech
* NEOS
* NetStandard
* Networkers AG
* Nokia
* NTT
* NVision Group
* OpenERP
* Opscode  (now Chef)
* Orange
* OverBright
* Ozona Consulting
* PCextreme
* PosAm
* PPTV
* PromonLogicalis
* Proteus
* Quality Software (Hostbill)
* RealCloud (PKN)
* Redapt
* RedBridge
* RightScale, Inc.
* Royal Melbourne Institute of Technology (RMIT)
* Safe Swiss Cloud
* SAP
* Scalr
* Schuberg Philis
* ScienceLogic, Inc.
* SCSK
* sepago GmbH
* ShapeBlue
* Shopzilla
* Slovak Telekom
* SoftLayer
* SoftwareONE
* SolidFire
* SSI
* StackIQ
* Stratosec
* SunGard AS
* SwiftStack
* SWISS TXT
* Taiwan Mobile
* Targus Technologies
* Tata
* Tendril
* TNTG Limited
* TomTom
* Trader Media Group
* TrendMicro/TCloud Computing
* UniSystems
* University of Melbourne
* University of Sao Paolo
* UShareSoft
* Verio
* Verizon
* Vision Solutions, Inc.
* VMTurbo
* WebMD
* X-IO Technologies
* Xtendsys
* Zajil Telecom
* Zenoss
* Zynga
