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
13 changes: 13 additions & 0 deletions .github/workflows/ci-fast.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,26 @@ permissions:

jobs:
fast:
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork != true
runs-on: depot-ubuntu-24.04-arm-16
timeout-minutes: 120
env:
CARGO_INCREMENTAL: "0"
CARGO_NET_GIT_FETCH_WITH_CLI: "true"

steps:
- name: Validate PR title
if: github.event_name == 'pull_request'
env:
TITLE: ${{ github.event.pull_request.title }}
run: |
if ! echo "$TITLE" | grep -qE '^(feat|fix|refactor|chore|docs|test|ci|perf)(\(.+\))?!?: .+'; then
echo "::error::PR title must follow Conventional Commits: <type>: <description>"
echo " Valid types: feat, fix, refactor, chore, docs, test, ci, perf"
echo " Example: feat: add Azure container deployment support"
exit 1
fi

- uses: actions/checkout@v4

- uses: dorny/paths-filter@v3
Expand Down
75 changes: 75 additions & 0 deletions .github/workflows/ci-fork.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
name: CI (Fork)

on:
pull_request:

permissions:
contents: read

jobs:
check:
if: github.event.pull_request.head.repo.fork == true
runs-on: ubuntu-24.04-arm
timeout-minutes: 120
env:
CARGO_INCREMENTAL: "0"
CARGO_NET_GIT_FETCH_WITH_CLI: "true"

steps:
- name: Validate PR title
env:
TITLE: ${{ github.event.pull_request.title }}
run: |
if ! echo "$TITLE" | grep -qE '^(feat|fix|refactor|chore|docs|test|ci|perf)(\(.+\))?!?: .+'; then
echo "::error::PR title must follow Conventional Commits: <type>: <description>"
echo " Valid types: feat, fix, refactor, chore, docs, test, ci, perf"
echo " Example: feat: add Azure container deployment support"
exit 1
fi

- uses: actions/checkout@v4

- uses: pnpm/action-setup@v4
with:
version: 10.11.0

- uses: actions/setup-node@v4
with:
node-version: 22
cache: pnpm
cache-dependency-path: pnpm-lock.yaml

- uses: dtolnay/rust-toolchain@nightly
with:
components: rustfmt, clippy

- uses: Swatinem/rust-cache@v2

- uses: taiki-e/install-action@nextest

- name: Install protoc
run: sudo apt-get update && sudo apt-get install -y protobuf-compiler

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Lint
run: pnpm format-and-lint

- name: TypeScript typecheck
env:
NODE_OPTIONS: "--max-old-space-size=4096"
run: pnpm test:ts

- name: Rust tests (non-cloud)
run: |
cargo nextest run --workspace \
--exclude alien-aws-clients \
--exclude alien-gcp-clients \
--exclude alien-azure-clients \
--exclude alien-k8s-clients \
--exclude alien-bindings \
--exclude byocdb \
--exclude endpoint-agent \
--exclude alien-test-server \
--filter-expr 'not binary_id(alien-build::build_integration_tests) and not binary_id(alien-build::rust_integration_tests) and not binary_id(alien-build::typescript_integration_tests) and not binary_id(alien-runtime::lambda) and not binary_id(alien-test::pull) and not binary_id(alien-test::push) and not binary_id(alien-manager::registry_proxy_cloud_test)'
8 changes: 1 addition & 7 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -75,13 +75,7 @@ jobs:
run: |
VERSION="${{ steps.bump.outputs.version }}"
for pkg in packages/core packages/sdk packages/testing client-sdks/platform/typescript client-sdks/manager/typescript; do
node -e "
const fs = require('fs');
const p = fs.readFileSync('${pkg}/package.json', 'utf8');
const j = JSON.parse(p);
j.version = process.env.VERSION;
fs.writeFileSync('${pkg}/package.json', JSON.stringify(j, null, 2) + '\n');
" VERSION="$VERSION"
sed -i "s/\"version\": \"[^\"]*\"/\"version\": \"${VERSION}\"/" "${pkg}/package.json"
done

- name: Commit and tag
Expand Down
17 changes: 14 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# Alien

![X (formerly Twitter) Follow](https://img.shields.io/twitter/follow/alien)
[![X (formerly Twitter) Follow](https://img.shields.io/twitter/follow/alien)](https://x.com/alien)
[![GitHub Release](https://img.shields.io/github/v/release/alienplatform/alien)](https://github.com/alienplatform/alien/releases)
[![Discord](https://img.shields.io/discord/1490401456124199224?label=Discord&logo=discord&logoColor=white)](https://alien.dev/discord)

*"My data is sensitive. Can you deploy into my cloud?"* — Every enterprise prospect, **ever**.
*"My data is sensitive. Can you deploy into my cloud?"* — Every enterprise customer, **ever**.

Alien provides infrastructure for deploying into your customers' cloud accounts and keeping it fully managed. AWS, GCP, or Azure.

Expand All @@ -18,7 +18,7 @@ The usual answer is sending a Docker image or a Helm chart. But while self-hosti

Alien gives you a different option. Deploy into their cloud and keep full control — push updates, collect non-sensitive logs and metrics, roll back. The customer doesn't operate anything. Their data never leaves.

## Getting started
## Quickstart

The best way to get started is to follow the [Quickstart](https://alien.dev/docs/quickstart) guide. You'll build an AI worker, test it locally, and deploy it — no cloud account needed to start.

Expand All @@ -28,6 +28,17 @@ cd my-worker
pnpm dev
```

## Features

- **[TypeScript & Rust](https://alien.dev/docs/infrastructure/function/toolchains)** — First-class support for both. Python and arbitrary containers coming soon.
- **[Real-time Heartbeat](https://alien.dev/docs/how-alien-works)** — Know the instant a deployment goes down. Continuous health checks with sub-second alerting.
- **[Auto Updates](https://alien.dev/docs/releases)** — Push a release and every deployment picks it up automatically. No coordination, no manual steps.
- **[Local-first Development](https://alien.dev/docs/local-development)** — Build and test on your machine. No cloud account necessary. Local equivalents for every cloud resource.
- **[Cloud-agnostic Infrastructure](https://alien.dev/docs/infrastructure)** — Ship to AWS, GCP, and Azure customers without maintaining separate integrations. Alien maps a single API to each cloud's native services at deploy time.
- **[Remote Commands](https://alien.dev/docs/commands)** — Invoke code on remote deployments from your control plane. Zero inbound networking. Zero open ports. No VPC peering.
- **[Observability](https://alien.dev/docs/how-alien-works)** — Logs, metrics, and traces from every deployment. Full visibility without touching customer infrastructure.
- **[Least-privilege Permissions](https://alien.dev/docs/permissions)** — Alien derives the exact IAM permissions required to deploy and manage your app. Nothing more.

## What you can build

- **AI Worker** — Agent harness in your cloud, tool execution in theirs. Read files, run commands, query data — all local. ([example](examples/remote-worker-ts))
Expand Down
3 changes: 3 additions & 0 deletions biome.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@
"files": {
"ignore": [
".wrangler/*.js",
".turbo/**",
"**/.alien/**",
"**/alien-data/**",
"**/dist/**",
"client-sdks/**",
"**/openapi.json",
Expand Down
1 change: 1 addition & 0 deletions packages/core/package.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"name": "@alienplatform/core",
"version": "1.3.2",
"type": "module",
"exports": {
".": {
Expand Down
1 change: 1 addition & 0 deletions packages/sdk/package.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"name": "@alienplatform/sdk",
"version": "1.3.2",
"type": "module",
"exports": {
".": {
Expand Down
1 change: 1 addition & 0 deletions packages/testing/package.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"name": "@alienplatform/testing",
"version": "1.3.2",
"description": "Testing framework for Alien applications",
"author": "Alien Software, Inc. <hi@alien.dev>",
"license": "FSL-1.1-Apache-2.0",
Expand Down
Loading