---
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)
* [HIAG Data AG](https://www.hiagdata.com)
* [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
* 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
