https://github.com/tobimadehin/playground
Stateless, cloud-agnostic ephemeral VM orchestration engine
https://github.com/tobimadehin/playground
azure dployr fleet-management gcp hetzner integration-testing test-automation vm
Last synced: 8 days ago
JSON representation
Stateless, cloud-agnostic ephemeral VM orchestration engine
- Host: GitHub
- URL: https://github.com/tobimadehin/playground
- Owner: tobimadehin
- License: mit
- Created: 2025-11-02T12:39:39.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2025-11-03T17:14:58.000Z (8 months ago)
- Last Synced: 2025-11-03T19:18:47.544Z (8 months ago)
- Topics: azure, dployr, fleet-management, gcp, hetzner, integration-testing, test-automation, vm
- Language: TypeScript
- Homepage: https://tobimadehin.github/playground
- Size: 113 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Playground
[](https://github.com/tobimadehin/playground/actions/workflows/ci.yml)
[](https://www.npmjs.com/package/@tobimadehin/playground)
[](https://opensource.org/licenses/MIT)
Playground lets you launch, manage, and clean up cloud instances across multiple providers. The playground itself is stateless, so you choose how to track instances.
## Quick Start
1. **Install the package**
```bash
npm install @tobimadehin/playground
````
2. **Create a provider map**
```typescript
import { AWSProvider, Playground } from '@tobimadehin/playground';
const providers = new Map();
providers.set('aws', new AWSProvider({
accessKeyId: '...',
secretAccessKey: '...',
region: 'us-east-1'
}));
const playground = new Playground({
providers,
imageMappingsPath: './examples/image-mappings.yaml'
});
```
3. **Launch an instance**
```typescript
const instance = await playground.createInstance({
imageType: 'ubuntu-22-small',
sshKey: 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAB... user@host'
});
console.log('Instance created:', instance.id, instance.ip);
```
4. **Track and clean up**
```typescript
import { PlaygroundUtils } from '@tobimadehin/playground';
if (PlaygroundUtils.isExpired(instance)) {
await playground.destroyInstance(instance.provider, instance.id);
}
```
---
## Next Steps
* [View example configurations](./examples/README.md)
* [View provider implementations](./src/providers/README.md)
* Learn about state management patterns
* Explore multi-cloud failover and region-specific deployments
* Check-out dployr *(Your app, your server, your rules!)* - [https://dployr.dev](https://dployr.dev)
## License
MIT License — see [LICENSE](LICENSE) for details.