ψ Vikshep

Studio

Vikshep Studio overview

Studio is a single React application that runs in two shells: the Vikshep hosted plane (served at /studio) and the Tauri desktop application. Both shells share the same studio-core TypeScript package and the same engine, so every result carries an identical ProvenanceManifest regardless of where it ran.

Two shells, one engine

Studio runs either as a Tauri desktop application (Desktop) or as a session-authenticated web application served by the Vikshep private app (Hosted). Both shells use the same studio-core Executor abstraction. The LocalExecutor dispatches to the Python sidecar CLIs and, when present, to the vikshep-mcp binary for scattering and anomaly ops. The CloudExecutor sends jobs to the hosted /api/jobs endpoint and polls for results.

The parity guarantee: for any CPU op with the same input content, LocalExecutor and CloudExecutor produce identical outputOids. Verified by the parity.test.ts integration test (runs with VIKSHEP_PARITY_TEST=1).

Screens

Studio has eight screens. Each screen maps to a named route in both the hosted and desktop shells.

Workspace

Landing screen. Lists projects (named collections of datasets and runs), recent datasets (ingested, with OID, date, source type), and recent runs (op name, status, timestamp, provenance hash). Quick-start CTA: Ingest a dataset.

Ingest

Accepts drag-drop or file-dialog for Geant4 CSV, ROOT TTree, HDF5 (Well schema). Steps: schema detection → column mapping UI → aggregates preview (per-layer statistics) → per-layer energy and multiplicity histograms → pad policy editor → Run ingest.

Features (Scattering Config)

Config form for the wavelet scattering transform: J (1–14), Q (1–32), L (1–16 for dim=2/3), order (1–2), Dim (1/2/3), Group (trivial/so2/so3), pad policy per axis. Filter bank preview shows Morlet coverage. Live coefficient count estimate: J × Q × (L if dim>1 else 1) × order.

Recipes

Three recipe forms (calibrate, tag, anomaly), each with parameter inputs and a live progress panel. calibrate: target column, R² score, residual std, feature importances. tag: label/protect/weights columns, lambda sweep UI, lambda frontier table. anomaly: k-NN parameter, SW1 threshold, flagged event list.

Results

Per-run result panel: dCorr_w report card (actual value; target = 0 for decorrelation), JSD pre/post-cut histogram overlay, lambda frontier scatter (AUC vs JSD), Asimov proxy significance (labelled explicitly as proxy, not Wilks), SW1 graph viewer for anomaly runs, Export report.json / report.md.

Provenance

Hash chain panel per ProvenanceManifest: engine_version, engine_build_hash, executor (local/cloud), platform, config_digest, input OIDs → output OIDs, wall_clock_ms, created_at, manifest_hash. Reproduce button re-submits the same job and diffs the output OIDs (green = identical, red = differ).

Compute

Executor selector: Local or Cloud. Local: engine binary version, sidecar status. Cloud: org quota (GPU-seconds remaining), estimated cost, job queue depth, current job status. Desktop only: burst-to-cloud checkbox routes any job to the cloud executor.

Settings

Tabs: Licence (plan, trial expiry, GPU-seconds remaining, licence key field) / Devices (table of activated devices, release button, DEVICE_LIMIT message for 3rd-device attempts) / API Key / Engine (version, check for updates) / Updates (auto-updater, Desktop only).

Licence and device limits

Studio Academic and Studio Pro seats allow up to 2 concurrent device activations. Each device holds a 24-hour Ed25519 offline-verifiable lease, renewed automatically while the device is online. After OFFLINE_GRACE_DAYS (default 14 days) without a heartbeat, Studio degrades to Free-tier behaviour — it never locks project files or data.

To release a device slot: Settings → Devices → Release. The slot is freed immediately. A third activation attempt returns a DEVICE_LIMIT error with the two current holders listed, each with a one-click Release action.

Getting the desktop app

Desktop builds are not publicly available yet. After launch, builds are available to licensed accounts from your account page after sign-in. See the download page for system requirements and the full download flow.