not connected

Playlists

0
⬡

No playlists yet

Upload a playlist and assign it to a folder

Scenarios

0
◎

No scenarios yet

Add scenarios with their share codes to launch them directly, and drop them into folders like your playlists

Routine

⏱

Queue is empty

Add blocks to build your session
—
00:00
space play/pause ←→ switch block

Sensitivity

Quick calculator
eDPI —
cm/360° CS2 / Source, m_yaw 0.022 —
⊕

Loading…

Aimbeast

0
⬡

No Aimbeast playlists yet

Add playlists with their workshop URL or code

Export / Import

Export

Download all your playlists and folder structure as a .zip. Includes the JSON files and a manifest so everything can be restored exactly.

Import

Drop a previously exported .zip to restore your library. Folders and playlists will be recreated in Supabase.

Drop .zip or click to browse

Settings

Connect your Supabase project. Credentials are stored in your browser only — never sent anywhere else.
Supabase setup guide
  1. Go to supabase.com and create a free account
  2. Create a new project, pick a name and region
  3. Go to Project Settings → API and copy your Project URL and anon key
  4. Open SQL Editor and run the table setup queries
  5. Paste your URL and key below and hit Save
create table if not exists folders (
  id uuid default gen_random_uuid() primary key,
  name text not null,
  position integer,
  created_at timestamptz default now()
);

create table if not exists playlists (
  id uuid default gen_random_uuid() primary key,
  name text not null,
  folder_id uuid references folders(id) on delete set null,
  game_tag text,
  notes text,
  file_data jsonb,
  share_code text,
  pinned boolean default false,
  position integer,
  created_at timestamptz default now()
);

create table if not exists scenario_folders (
  id uuid default gen_random_uuid() primary key,
  name text not null,
  position integer,
  created_at timestamptz default now()
);

create table if not exists scenarios (
  id uuid default gen_random_uuid() primary key,
  name text not null,
  folder_id uuid references scenario_folders(id) on delete set null,
  share_code text,
  game_tag text,
  notes text,
  pinned boolean default false,
  position integer,
  created_at timestamptz default now()
);

create table if not exists sens (
  id uuid default gen_random_uuid() primary key,
  scenario_type text not null unique,
  cm360 numeric,
  updated_at timestamptz default now()
);

create table if not exists aimbeast_folders (
  id uuid default gen_random_uuid() primary key,
  name text not null,
  position integer,
  created_at timestamptz default now()
);

create table if not exists aimbeast_playlists (
  id uuid default gen_random_uuid() primary key,
  name text not null,
  folder_id uuid references aimbeast_folders(id) on delete set null,
  game_tag text,
  notes text,
  workshop_url text,
  playlist_code text,
  pinned boolean default false,
  position integer,
  created_at timestamptz default now()
);

Already have these tables from an older version? Run this too — it's safe to run more than once and won't touch existing data:

alter table folders add column if not exists position integer;
alter table playlists add column if not exists pinned boolean default false;
alter table playlists add column if not exists position integer;
alter table scenarios add column if not exists pinned boolean default false;
alter table scenarios add column if not exists position integer;
alter table scenarios add column if not exists folder_id uuid references scenario_folders(id) on delete set null;
alter table aimbeast_folders add column if not exists position integer;
alter table aimbeast_playlists add column if not exists pinned boolean default false;
alter table aimbeast_playlists add column if not exists position integer;

New: scenario folders. If you already have a scenarios table, run the create table if not exists scenario_folders block above once too — it won't touch anything else.

Appearance