> npm i @simai/sdk
node 18+, edge runtimes, bun.
> bay 01 // hello
> bay 02 // the kit
pick your stack. the surface area is identical across runtimes — same primitives, same defaults, same telemetry hooks.
> npm i @simai/sdk
node 18+, edge runtimes, bun.
> pip install simai
async first. 3.10+.
> cargo add simai
zero-cost wrappers. tokio.
> bay 03 // chat
1import { simai } from "@simai/sdk"; 2 3const agent = simai.chat({ 4 model: "simai-1", 5}); 6await agent.say("hey there.");
> bay 04 // tools
register typed functions. simai picks them, argues with itself, and only calls the one that fits.
1const weather = simai.tool({ 2 name: "weather", 3 args: { city: z.string() }, 4 run: async ({ city }) => fetchWx(city), 5}); 6 7const reply = await agent.use([weather]) 8 .ask("is seoul warm tomorrow?");
> bay 05 // memory
persistence is a single line. you hand simai a store — redis, sqlite, a flat file, whatever — and it threads context across sessions, prunes cold entries on a schedule you control, and never silently truncates. no vector-database ceremony for cases that don't need one.
> bay 06 // eval
every run produces a row. pass, fail, drift — all rendered as a spec sheet, not a dashboard.
> bay 07 // playground
> open the playground