
Research
Shai-Hulud Descends to Hades: Miasma Worm Campaign Spreads with New PyPI Wave
Socket found 37 malicious PyPI wheels that abuse Python startup hooks to launch a Bun-powered credential stealer tied to Mini Shai-Hulud/Miasma.
@r1-runtime/cli
Advanced tools
R1 TauriWeb Runtime CLI — migrate Tauri apps to the browser with npx r1 sync.
R1 TauriWeb Runtime CLI — migrate Tauri apps to the browser with one command.
# In your Tauri app directory
npx @r1-runtime/cli sync
The CLI automatically migrates your Tauri app to work with R1:
build.rs - Disables Tauri's native build processCargo.toml - Adds WASM dependencies and configures libraryr1-macros - Enables #[r1::command] proc macrovite.config.ts - Adds R1 Vite pluginpackage.json - Installs R1 packages.r1-backup extension# Create a Tauri app
npm create tauri-app@latest my-app -- --template react-ts --yes
# Migrate to R1
cd my-app
npx @r1-runtime/cli sync
# Build and run
npm install
npm run build
npx serve dist
🚀 R1 TauriWeb Runtime — Sync
✓ Detecting project...
Found: Tauri v2, React + TypeScript, 3 commands
✓ Patching build.rs...
✓ Updating Cargo.toml...
✓ Adding r1-macros dependency...
✓ Updating vite.config.ts...
✓ Updating package.json...
✓ Converting SQL imports...
✓ Rewriting 3 Rust commands...
Done! Next steps:
npm install
npm run build
npx serve dist -l 3000
Then open http://localhost:3000 and press Ctrl+F5.
build.rs// Before: Complex Tauri build script
// After:
fn main() {}
Cargo.toml# Adds:
[lib]
name = "your_app"
crate-type = ["cdylib", "rlib"]
[dependencies]
wasm-bindgen = "0.2"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
r1-macros = "0.3.0"
# Moves native deps to:
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
tauri = "..."
vite.config.tsimport { r1Plugin } from '@r1-runtime/vite-plugin';
export default defineConfig({
plugins: [
r1Plugin({ rustSrc: './src-tauri' }),
// ... other plugins
]
});
package.json{
"dependencies": {
"@r1-runtime/core": "^0.3.0",
"@r1-runtime/apis": "^0.3.0"
},
"devDependencies": {
"@r1-runtime/vite-plugin": "^0.3.0"
}
}
// Before:
import Database from "@tauri-apps/plugin-sql";
// After:
import { Database } from "@r1-runtime/apis/sql";
All modified files are backed up with .r1-backup extension:
build.rs.r1-backupCargo.toml.r1-backupvite.config.ts.r1-backuppackage.json.r1-backupMake sure you're running the command in your Tauri app root directory (where package.json is).
Use npx @r1-runtime/cli sync instead of just r1 sync.
npm install to install R1 packagesrm -rf target/ dist/npm run buildMIT © 2026 R1 Runtime Team
FAQs
R1 TauriWeb Runtime CLI — migrate Tauri apps to the browser with npx r1 sync.
We found that @r1-runtime/cli demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
Socket found 37 malicious PyPI wheels that abuse Python startup hooks to launch a Bun-powered credential stealer tied to Mini Shai-Hulud/Miasma.

Security News
RubyGems and Bundler 4.0.13 introduced an opt-in cooldown feature that delays newly published gems during dependency resolution.

Security News
pnpm 11.5 now recognizes npm staged publish approvals in release metadata, preventing those releases from being mistaken for lower-trust package publishes.