Open Source · SDKs · Infra · Console
Everything above the kernel is open.
One C++ core, six thin bindings. Behaviour that does not drift between platforms.
The stack
One core. Six thin bindings.
runanywhere-coreC++ · shared by every bindingllmsttttsvlmembeddingsmodel mgmt
- Swiftios · macos
- Kotlinandroid · jvm
- React Nativeios · android
- Flutterios · android · desktop
- TypeScriptweb · wasm · live demo
- C++ (CLI)linux · windows · embedded
A new target is a new binding, not a rewrite.
The same call, every binding
Four lines of code. Any modality.
import RunAnywhere
let response = try await RunAnywhere.chat("Explain quantum computing")
print(response)
// Streaming: RunAnywhere.generateStream(prompt)import ai.runanywhere.sdk
val response = RunAnywhere.chat("Explain quantum computing").await()
println(response)
// Streaming: RunAnywhere.generateStream(prompt)import { RunAnywhere } from "@runanywhere/sdk"
const response = await RunAnywhere.chat("Explain quantum computing")
console.log(response)
// Streaming: RunAnywhere.generateStream(prompt)import "package:runanywhere/runanywhere.dart"
final response = await RunAnywhere.chat("Explain quantum computing");
print(response);
// Streaming: RunAnywhere.generateStream(prompt)import { RunAnywhere } from "@runanywhere/sdk"
const response = await RunAnywhere.chat("Explain quantum computing")
console.log(response)
// Runs in the browser on WASM, no server requiredimport RunAnywhere
let audioData = try Data(contentsOf: audioURL)
let text = try await RunAnywhere.transcribe(audioData)
print(text)import ai.runanywhere.sdk
val audioData = File(audioPath).readBytes()
val text = RunAnywhere.transcribe(audioData).await()
println(text)import { RunAnywhere } from "@runanywhere/sdk"
const audioData = await fetchAudio(audioUrl)
const text = await RunAnywhere.transcribe(audioData)
console.log(text)import "package:runanywhere/runanywhere.dart"
final audioData = await File(audioPath).readAsBytes();
final text = await RunAnywhere.transcribe(audioData);
print(text);import { RunAnywhere } from "@runanywhere/sdk"
const audio = await recordFromMicrophone()
const text = await RunAnywhere.transcribe(audio)
console.log(text)import RunAnywhere
let output = try await RunAnywhere.synthesize("Hello world")
let player = try AVAudioPlayer(data: output.audioData)
player.play()import ai.runanywhere.sdk
val output = RunAnywhere.synthesize("Hello world").await()
val player = MediaPlayer().apply { setDataSource(output.audioData) }
player.start()import { RunAnywhere } from "@runanywhere/sdk"
const output = await RunAnywhere.synthesize("Hello world")
const audio = new Audio(output.audioUrl)
audio.play()import "package:runanywhere/runanywhere.dart"
final output = await RunAnywhere.synthesize("Hello world");
final player = AudioPlayer();
await player.play(BytesSource(output.audioData));import { RunAnywhere } from "@runanywhere/sdk"
const output = await RunAnywhere.synthesize("Hello world")
const audio = new Audio(output.audioUrl)
audio.play()import RunAnywhere
let image = UIImage(named: "photo")!
let response = try await RunAnywhere.analyze(image, "What is in this image?")
// vision decode, entirely on deviceimport ai.runanywhere.sdk
val image = BitmapFactory.decodeResource(resources, R.drawable.photo)
val response = RunAnywhere.analyze(image, "What is in this image?").await()
// vision decode, entirely on deviceimport { RunAnywhere } from "@runanywhere/sdk"
const image = await loadImage("photo.jpg")
const response = await RunAnywhere.analyze(image, "What is in this image?")
// vision decode, entirely on deviceimport "package:runanywhere/runanywhere.dart"
final image = await File("photo.jpg").readAsBytes();
final response = await RunAnywhere.analyze(image, "What is in this image?");
// vision decode, entirely on deviceimport { RunAnywhere } from "@runanywhere/sdk"
const image = await loadImage("photo.jpg")
const response = await RunAnywhere.analyze(image, "What is in this image?")
// vision decode, entirely on deviceConsole · control plane
One console. Explicit modes.
Choose Cloud or On-Device on purpose. Cloud keys never double as device SDK credentials.
Login to the ConsoleTry it today