With Bilembi, you design your agents — their behavior, their tools, their access — then take them everywhere with you.
// your agents · your tools · your models ▍
A chatbot just replies; your agents act. Behavior, tools, model, access — it's all yours to shape, for agents that feel like you, because you built them.
Its role, its voice, what it knows about you. You write who it is, and you keep as much of it as you need.
You hand it tools — and it writes real code in a sandbox to use them: files, git, web requests, maps.
Capability by capability, you decide what it's allowed to touch. Every permission is granted — never assumed by default.








Bilembi runs its agents on a custom agentic harness, written in Swift. Each one composes its capabilities on the fly — here's what that looks like.
Bilembi embeds QuickJS, a complete, lightweight and fast JavaScript engine, built into the app and isolated from everything else — a true sandbox. Your agent uses it to write scripts that take action: read and write files, clone a repository, browse the web, call APIs, create maps… everything you need to build advanced workflows.
// Fetch the latest earthquakes and drop them on a map
import { request } from '@native/http';
import * as maps from '@native/maps';
import { cite } from '@native/cite';
const url = 'https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/4.5_day.geojson';
const r = await request({ url, headers: { accept: 'application/geo+json' } });
const quakes = JSON.parse(r.body).features.slice(0, 8);
// Credit the source properly — Bilembi turns it into a real citation
cite({ title: 'USGS Earthquake Hazards Program', description: 'Real-time earthquake feed — public domain', url: 'https://earthquake.usgs.gov' });
const m = await maps.create({ style: 'standard' });
for (const f of quakes) await m.addPin({
lat: f.geometry.coordinates[1], lon: f.geometry.coordinates[0],
name: `M${f.properties.mag} — ${f.properties.place}`,
caption: 'Earthquake fetched automatically from the open USGS feed', link: f.properties.url
});
export default await m.save();
Create specialized agents tailored to your needs, and let your agents call on one another as sub-agents.
Bilembi integrates natively with iOS: your agent checks and creates your reminders and calendar events, and draws on your location — all without leaving the conversation.
When plain HTTP requests aren't enough, call on WebKit to load real, dynamic web pages. Your agent can take screenshots of them and run JavaScript inside.
Markdown rendering with music and weather widgets, interactive maps, graphics, and more.
Your agents and Bilembi finish their work in the background, even when you leave the app.
Your agents ship with skills and reach for them naturally: when one creates another, it teaches it how to work — SKILLS.md for behavior, scripts for actions that demand determinism or repeat.
With great power comes great responsibility. Exposed to untrusted content, an agent can see any outbound channel used to exfiltrate your private data, and any tool turned against you — the now-infamous lethal trifecta. Bilembi answers with four execution modes, each breaking that combination at a different point. You choose which, depending on the task.
A web page, a file: any untrusted content goes straight there, and its raw text never reaches the model's context — exactly where booby-trapped instructions would hide. The agent reaches it only through safe, restricted queries: precise facts, extracted without ever exposing the original. The most dangerous effects of prompt injection become virtually impossible.
You fine-tune the tools entrusted to each agent. Each one has only what its task strictly requires, nothing more — and stays compartmentalized. A Privacy section gives you the full picture: what each agent can access, at a glance.
Modes combine. An orchestrator in Shield can drive sub-agents in Scout: they roam freely, while it keeps untrusted content in the vault and surfaces only their answers — never exposing itself. The best of both worlds.
No provider forced on you. A Codex account, OpenRouter, any OpenAI-compatible HTTPS server — or local models via llama.cpp. You decide where each model runs.
All the power you've built, finally in your pocket — and ready when it matters.