Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
166 changes: 120 additions & 46 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,73 +1,147 @@
![CloudExit](./docs/images/Main.png)
<p align="center">
<img src="./docs/images/Logo.png" alt="EscapeCloud" width="400" />
</p>

<p align="center">
<strong>Know your exit before you're locked in.</strong><br />
Open-source cloud exit assessment CLI. Runs locally, no account required.
</p>

<p align="center">
<a href="https://opensource.org/licenses/AGPL-3.0"><img src="https://img.shields.io/badge/license-AGPL--3.0-green" alt="License"></a>
<img src="https://img.shields.io/endpoint?url=https%3A%2F%2Fapi.escapecloud.io%2Fpublic%2Fbadges%2Fcloud-providers&style=flat" alt="Cloud providers">
<img src="https://img.shields.io/endpoint?url=https%3A%2F%2Fapi.escapecloud.io%2Fpublic%2Fbadges%2Faws-services&style=flat" alt="AWS services">
<img src="https://img.shields.io/endpoint?url=https%3A%2F%2Fapi.escapecloud.io%2Fpublic%2Fbadges%2Fazure-services&style=flat" alt="Azure services">
<img src="https://img.shields.io/endpoint?url=https%3A%2F%2Fapi.escapecloud.io%2Fpublic%2Fbadges%2Falternative-technologies&style=flat" alt="Alternative technologies">
</p>

<p align="center">
<a href="#quick-start">Quick Start</a> ·
<a href="#what-you-get">What you get</a> ·
<a href="#cloud-providers">Providers</a> ·
<a href="#configuration">Configuration</a> ·
<a href="#cicd">CI/CD</a> ·
<a href="#ecosystem">Ecosystem</a> ·
<a href="https://cloudexit.escapecloud.io">Docs</a>
</p>

# cloudexit – Cloud Exit Assessment (Open Source)
---

cloudexit is an open-source tool that helps cloud engineers and technical teams assess **cloud exit readiness**.
## What is cloudexit?

It provides a structured, repeatable way to understand:
- what cloud services are in use
- where vendor lock-in risks exist
- how difficult an exit scenario would be
- what alternative technologies are available
cloudexit is a free, open-source CLI that assesses your **cloud exit readiness**. It connects to your AWS or Azure account with read-only credentials, builds a full resource and cost inventory, scores your vendor lock-in risk across service categories, and produces an HTML, PDF, and JSON report — all locally, with no account required.

cloudexit runs **locally by default**, with no account required.
It is the open-source foundation of the [EscapeCloud](https://escapecloud.io) ecosystem.

## Quick Start

![Cloud providers](https://img.shields.io/endpoint?url=https%3A%2F%2Fapi.escapecloud.io%2Fpublic%2Fbadges%2Fcloud-providers&style=flat-square) ![AWS services](https://img.shields.io/endpoint?url=https%3A%2F%2Fapi.escapecloud.io%2Fpublic%2Fbadges%2Faws-services&style=flat-square) ![Azure services](https://img.shields.io/endpoint?url=https%3A%2F%2Fapi.escapecloud.io%2Fpublic%2Fbadges%2Fazure-services&style=flat-square) ![Alternative technologies](https://img.shields.io/endpoint?url=https%3A%2F%2Fapi.escapecloud.io%2Fpublic%2Fbadges%2Falternative-technologies&style=flat-square)
**Prerequisites:** Python 3.12+, and either an AWS CLI profile or an Azure CLI session.

---
```bash
git clone git@github.com:escapecloud/cloudexit.git
cd cloudexit
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
```

## How cloudexit fits into the EscapeCloud ecosystem
Run your first assessment:

cloudexit is the **Community / Open Source edition** of the EscapeCloud ecosystem.
```bash
# AWS — using your existing CLI profile
python main.py aws --profile default

- **cloudexit (this repository)**
Open-source, offline-first assessment engine
# Azure — using your Azure CLI session
az login
python main.py azure --cli
```

- **exitcloud.io**
Lightweight Cloud Exit Readiness Platform for individuals, SMEs, and MSPs
Reports are written locally as HTML, PDF, and JSON. Full credential and permissions setup is covered in the [documentation](https://cloudexit.escapecloud.io).

- **escapecloud.io**
Enterprise Cloud Exit Readiness Platform with advanced reporting and governance
## What you get

cloudexit can be used:
- fully offline (Basic assessment)
- connected to a platform (exitcloud.io / escapecloud.io) for richer reports and scoring
- in CI/CD via the [cloudexit GitHub Action](https://github.com/marketplace/actions/github-action-for-cloudexit) for automated assessments
cloudexit produces a structured exit readiness report covering:

---
- **Resource Inventory** — every service in use within the defined scope
- **Cost Inventory** — monthly cost breakdown within the defined scope
- **Risk Assessment** — rule-based evaluation of exit feasibility across each identified service
- **Alternative Technologies** — open-source and portable replacements for each identified cloud service, with additional details such as company ownership and location

## Documentation
![Report](./docs/images/Report.png)

📘 **Full documentation:**
👉 https://cloudexit.escapecloud.io
## Cloud Providers

The documentation covers:
- getting started and prerequisites
- running assessments
- cloud providers and permissions
- reports and scores
- connected mode (exitcloud.io / escapecloud.io)
- troubleshooting and contribution guidelines
| Provider | Required permissions |
|---|---|
| Amazon Web Services | [AWS permissions →](https://cloudexit.escapecloud.io/cloud-providers/aws.html) |
| Microsoft Azure | [Azure permissions →](https://cloudexit.escapecloud.io/cloud-providers/azure.html) |

---
See the [permission reference](https://cloudexit.escapecloud.io/cloud-providers/required-permissions.html) for details.

## License
> Google Cloud Platform & Oracle Cloud Infrastructure is on the roadmap.

cloudexit is licensed under the
**GNU Affero General Public License v3 (AGPL-3.0)**
## Configuration

See the [LICENSE](https://www.gnu.org/licenses/agpl-3.0.html) file for details.
The CLI supports multiple input modes for both AWS and Azure.

---
**AWS**

| Mode | Command |
|---|---|
| Interactive (manual credentials) | `python main.py aws` |
| AWS CLI profile | `python main.py aws --profile PROFILE` |
| JSON config file | `python main.py aws --config config.json` |
| Non-interactive (env vars, CI) | `python main.py aws --non-interactive` |

**Azure**

| Mode | Command |
|---|---|
| Interactive (service principal) | `python main.py azure` |
| Azure CLI session | `python main.py azure --cli` |
| JSON config file | `python main.py azure --config config.json` |
| Non-interactive (env vars, CI) | `python main.py azure --non-interactive` |

See the [configuration reference](https://cloudexit.escapecloud.io/config/config-schema.html) for required permissions and config file format.

Want to see how a regulatory-aligned report looks (DORA / FINMA / UK PRA)? Run with `--dry-run` and send the output `payload.json` to request_report@escapecloud.io — we'll generate a sample you can share with your risk or compliance team.

## CI/CD

cloudexit runs headlessly in CI pipelines via `--non-interactive` and environment variables. A ready-made GitHub Action is available:

```yaml
- uses: escapecloud/cloudexit-action@v1
with:
provider: aws
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: us-east-1
ESC_EXIT_STRATEGY: 1
ESC_ASSESSMENT_TYPE: 1
```

[View on GitHub Marketplace →](https://github.com/marketplace/actions/github-action-for-cloudexit)

## Ecosystem

cloudexit is the open-source, offline-first tier of a broader platform.

| Tier | Description |
|---|---|
| **cloudexit** (this repo) | CLI, offline Basic assessment, local reports |
| **[exitcloud.io](https://exitcloud.io)** | Lightweight platform for individuals, SMEs, and MSPs — adds scoring, history, and richer reports |
| **[escapecloud.io](https://escapecloud.io)** | Enterprise platform with advanced reporting, governance, and regulatory evidence (DORA, FINMA, UK PRA) |

Running cloudexit offline always produces a Basic assessment. Connect it to exitcloud.io or escapecloud.io for full scoring and report features.

## Contributing

Contributions are welcome.
Contributions are welcome — bug reports, documentation improvements, new service mappings, and pull requests.

You can contribute by:
- reporting issues
- improving documentation
- submitting pull requests
See the [contribution guidelines](https://cloudexit.escapecloud.io/contributing/how-to-contribute.html) for details.

## License

Please see the documentation for contribution guidelines.
cloudexit is licensed under the **GNU Affero General Public License v3 (AGPL-3.0)**.
See [LICENSE](./LICENSE) for details.
Binary file added docs/images/Logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed docs/images/Report-Screen.png
Binary file not shown.
Binary file added docs/images/Report.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.