AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Self-hosted SaaS platform for testing Android apps on real, isolated Android Emulator instances streamed to the browser.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A self-hosted SaaS platform for testing Android applications on real,
fully isolated Android Emulator instances, streamed to the browser. Think
BrowserStack / AWS Device Farm, but running emulators you control.
Every session gets its own emulator process, its own AVD (own userdata,
sdcard, settings), and its own console/adb port pair - two users on the same
device profile never share state. See docs/ARCHITECTURE.md
for the full design.README 전문 보기 ↗A self-hosted SaaS platform for testing Android applications on real, fully isolated Android Emulator instances, streamed to the browser. Think BrowserStack / AWS Device Farm, but running emulators you control.
Every session gets its own emulator process, its own AVD (own userdata, sdcard, settings), and its own console/adb port pair - two users on the same device profile never share state. See docs/ARCHITECTURE.md for the full design.
Both, on purpose. EMULATOR_PROVIDER=mock (the default everywhere except a
provisioned Linux+KVM host) runs MockEmulatorProvider, a dependency-free
stand-in that renders a synthetic device frame and simulates boot/install/
input, so the entire product - upload, device lab, scheduling, sessions,
streaming, logs, billing, admin - works end-to-end on a laptop with no
Android SDK installed. EMULATOR_PROVIDER=real runs RealAndroidEmulatorProvider,
which spawns the actual emulator/adb/avdmanager binaries from the
Android SDK. The worker refuses to boot with EMULATOR_PROVIDER=mock in
NODE_ENV=production - see services/emulator-worker/src/providers/index.ts.
apps/
web/ Next.js frontend (dashboard, device lab, sessions, admin)
api/ REST API - auth, orgs/projects/apps, sessions, billing, admin
services/
device-orchestrator/ Runs the 12-step "Start Device" workflow as BullMQ jobs
scheduler/ Pure host-selection logic, called in-process by the orchestrator
emulator-worker/ Drives real/mock Android Emulator instances on a compute host
streaming-gateway/ Proxies the browser <-> worker video/control WebSocket
packages/
database/ Prisma schema + client (single source of truth for the DB)
shared/ Cross-service types, zod schemas, queue names, plan definitions
device-types/ Provider-agnostic types (DeviceProfileSpec, EmulatorLaunchSpec, ...)
storage/ S3-compatible object storage client (MinIO locally)
config/ Typed env loader shared by every backend service
infrastructure/
docker/ Per-service Dockerfiles
kubernetes/ Reference manifests (not wired into a real cluster yet)
monitoring/ Prometheus + Grafana provisioning
docs/
ARCHITECTURE.md, SETUP.md, EMULATOR_HOST_SETUP.md, ROADMAP.md
corepack enable
cp .env.example .env # fill in JWT_SECRET at minimum
cp apps/web/.env.example apps/web/.env.local
docker compose up -d postgres redis object-storage
pnpm install
pnpm db:generate
pnpm db:migrate
pnpm db:seed # demo org + user ([email protected] / password123) + device profiles
pnpm dev # runs every app/service in parallel via turbo
Then open http://localhost:3000, sign in with the seeded demo account, upload
an APK, and click Start Device. With EMULATOR_PROVIDER=mock you'll see a
synthetic device frame reacting to taps/swipes/typed text in real time - the
full orchestration pipeline (scheduler, DB state machine, progress events,
streaming socket) is real; only the "device" itself is simulated.
See docs/EMULATOR_HOST_SETUP.md. Short version:
install the Android SDK cmdline-tools + emulator + platform-tools +
system images, confirm /dev/kvm is accessible, set EMULATOR_PROVIDER=real,
and register the host from the Admin Dashboard (or POST /api/admin/compute-hosts).
docker compose updocker-compose.yml builds and runs every service, plus Prometheus+Grafana.
The bundled emulator-worker image still runs in mock mode by default - swap
EMULATOR_PROVIDER: real and add devices: ["/dev/kvm:/dev/kvm"] +
privileged: true only once you're building that image on an actual
Linux+KVM machine.
This is a working MVP foundation, not a finished commercial product. What's real: the full request path from "Start Device" to a running (mock or real) emulator, tenant-isolated multi-org auth, APK upload + metadata extraction, device scheduling, live streaming + input, logs, screenshots, recordings, usage tracking, and an admin dashboard. What's intentionally stubbed with a clear TODO rather than faked: Kubernetes/Cloud compute providers, Stripe billing, email delivery, and WebRTC (the stream transport today is a WebSocket frame-polling channel - see docs/ROADMAP.md).