Busabase
Busabase는 AI 에이전트를 위한 오픈소스(MIT) 데이터베이스 및 작업 공간입니다
Tauri desktop chat app with Pi agent runtimes and generated API plugins
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A desktop AI agent that builds the tools it needs.
Raynard is a chat app for questions that need real data. Ask it something, and it answers from services it can already reach. Ask it something it has no way to reach, and instead of guessing it tells you what connection is missing and offers to write one — you approve, it codes and tests the extension, and then it answers the original question.
Runs on macOS, Linux, and Windows. Bring your own model provider.
Answers from live data, with its sources. Replies carry citations and structured result cards, so a claim can be checked rather than taken on trust.
Writes its own extensions. When a capability is missing, Raynard asks permission to build it. A separate coding agent then writes a TypeScript extension — client, tests, README, and result cards — inside its own directory. Nothing ships until it passes mocked tests and one real call against the live API, because mocked tests alone can be green while every endpoint is wrong.
Two visible modes. Ordinary questions run in Explore. Only the build confirmation moves the app into Build, and the next message returns to Explore. You always know which one you are in, and extension changes never happen behind your back.
Steerable mid-answer. You do not have to wait for a turn to finish. Enter
queues a correction the agent picks up at its next tool-call boundary;
Alt+Enter queues a follow-up for when it would otherwise stop. Queued text
sits above the composer until the agent actually takes it.
Work on a schedule. Recurring Explore tasks run daily, weekdays, weekly, monthly, quarterly, or yearly in your time zone, writing results into a dedicated chat or an existing one. Scheduled runs can never enter Build on their own.
Shareable answers, with no server. Sharing an answer builds a link that carries the whole payload in the URL fragment — which browsers never transmit. Nothing is uploaded, nothing is stored, and nothing identifies the sender.
Concurrent chats. Several conversations can be working at once. Navigating away does not cancel a run, and coming back reconnects to it live.
Also: bookmarks, a bundled catalog of pre-approved extensions, token and quota reporting, and in-app updates.
Nothing about this is limited to public APIs. Point Raynard at your company's internal service or anything behind a key, give it the documentation — a URL, or the spec pasted into the chat — and it writes a client for that instead.
Authentication is handled without the secret ever reaching the code. The extension declares which credentials it needs in its manifest and reads them by name; the first time a tool runs without one, the app stops and asks you for it by name rather than failing. The value goes into your operating system keychain, never into the extension's files, so an extension can be read, edited, or shared without carrying a key with it.
Each extension runs in its own process and is handed only the credentials it declared — one extension cannot read another's. Credential values are stripped out of error messages and failed HTTP responses before they reach the conversation.
Extensions you build this way stay on your machine. They live in your app data directory, are never uploaded anywhere, and are not candidates for this repository's bundled catalog unless you explicitly decide to propose one.
One thing to be clear about: the responses from an API you connect do go to your model provider, because reading them is how the agent answers your question. The credentials stay local; the data they unlock does not. Connect accordingly.
Download the latest release for your platform:
| Platform | |
|---|---|
| macOS (Apple Silicon) | Raynard-mac-arm64.dmg |
| Linux x86_64 | Raynard-linux-x86_64.AppImage |
| Debian / Ubuntu | Raynard-linux-amd64.deb |
| Windows x64 | Raynard-windows-x64-setup.exe |
Or install from a terminal, with checksum verification:
# Linux
curl -fsSL https://github.com/geirfreysson/raynard/releases/latest/download/install.sh | sh
# Windows
irm https://github.com/geirfreysson/raynard/releases/latest/download/install.ps1 | iex
You do not need Node.js, Rust, or Homebrew — the packaged app embeds its own Node runtime. macOS builds are signed and notarized and require macOS 13 or later. Windows installers are not yet signed, so SmartScreen will warn on first run.
On first launch Raynard asks for a provider before anything else. You can sign in with ChatGPT, or use an API key from Claude or Kimi. One provider serves both the chat and coding roles.
Type /models at any time to switch. API keys are stored in the operating
system keychain — the app's own config file holds preferences only, never
secrets.
/models | Connect or switch model providers |
/extensions | Browse installed and bundled extensions |
/settings | App version and updates |
/status | Token usage and provider quota |
Requires Node.js and a Rust toolchain.
npm install
npm run tauri dev
Before committing:
npm test -- --run
npm run build
cargo test --manifest-path src-tauri/Cargo.toml --lib
cargo check --manifest-path src-tauri/Cargo.toml
The documentation site in docs/ is a separate Docusaurus project:
cd docs && npm install && npm start
여기까지가 README 앞부분입니다. 나머지는 원문에서 읽을 수 있습니다. README 전문 보기 ↗