https://github.com/zknicker/tavern
Tavern desktop app and runtime
https://github.com/zknicker/tavern
Last synced: 23 days ago
JSON representation
Tavern desktop app and runtime
- Host: GitHub
- URL: https://github.com/zknicker/tavern
- Owner: zknicker
- Created: 2026-05-15T19:19:09.000Z (2 months ago)
- Default Branch: main
- Last Pushed: 2026-07-01T18:41:45.000Z (24 days ago)
- Last Synced: 2026-07-01T19:26:02.945Z (24 days ago)
- Language: TypeScript
- Size: 18.2 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Agents: AGENTS.md
Awesome Lists containing this project
README
# Tavern
Tavern is a macOS chat app for working with always-on agents.
Tavern Runtime is the local chat server. It owns canonical chats, messages,
participants, sequence, events, reads, deliveries, activity, automations, and
runtime-owned product state. Tavern App is the first-party Electron client and
presentation layer. The internal agent engine runs turns through local AI SDK
language models and projects execution activity back into Tavern Runtime.
## Architecture
```text
Tavern App
-> @tavern/sdk
-> Tavern API
-> Tavern Runtime
-> Agent engine
```
`packages/tavern-api` is the cross-boundary contract package. OpenAPI is the
wire source of truth, and the package also owns the shared Zod contracts used by
the current Runtime/App/admin surfaces.
`packages/tavern-sdk` is the TypeScript client over that API. Bots, webhooks,
automations, local tools, tests, and the app use the SDK/API
shape instead of a second protocol package.
## Repo Layout
* `packages/tavern-api`: OpenAPI and shared Tavern API contracts.
* `packages/tavern-sdk`: TypeScript client wrapper for Tavern API.
* `apps/runtime`: always-on Tavern Runtime and local agent engine.
* `apps/server`: local app backend, tRPC facade, app cache, and product logic.
* `apps/website`: Electron/React app client.
* `jobs`: local background jobs for sync, usage ingest, and refresh work.
## Development
Install dependencies:
```bash
bun install --frozen-lockfile
```
Run the full local stack:
```bash
bun run dev
```
`bun run dev` starts Tavern Runtime, the local app backend, the website dev
server, and the desktop shell.
Dev state is isolated under the worktree-specific Tavern dev root. The default
Runtime root outside the dev stack is `~/.tavern/runtime`.
Local dev ports are derived from the worktree path so multiple worktrees can run
at once. Override them with:
```bash
TAVERN_RUNTIME_HOST=127.0.0.1
TAVERN_RUNTIME_PORT=18790
TAVERN_AGENT_PROVIDER=openai
```
Set `TAVERN_RUNTIME_HOST=0.0.0.0` and point the app at
`http://:18790` when Runtime runs on an always-on Mac.
Production Runtime installs expose `tavern` as the preferred CLI and keep
`tavern-runtime` as a compatibility alias. `tavern update` upgrades the
Homebrew formula and restarts the service by default.
## Desktop Build
Build a debug desktop app and DMG:
```bash
bun run desktop:build
```
The macOS outputs are written under `apps/website/electron-dist/`.
## Docs
Start with [docs/README.md](docs/README.md).