Official plugins and agent packages for Bakin.
Bakin Bits is the home for first-party plugins and agent packages that extend Bakin, a personal AI runtime. Plugins live here so they can ship and update independently of the Bakin core binary — a fix to a plugin doesn't require a new core release, and contributors can land changes without coordinating with the runtime team.
Each package in this monorepo is installed by git subpath, not by publishing to a registry:
bakin plugins install github:markhayden/bakin-bits-official#plugins/<name>
bakin agents install github:markhayden/bakin-bits-official#agents/<name>The #subpath syntax tells Bakin to clone this repo, copy just the selected
package directory into the local runtime, and discard everything else. You
get one package, not the whole monorepo.
Public docs (in progress) — extending Bakin: https://makinbakin.com/docs/extending/overview/
Install the messaging plugin into a running Bakin runtime:
bakin plugins install github:markhayden/bakin-bits-official#plugins/messagingDuring the SDK cutover, install this branch with a matching Bakin cutover build.
A normal binary install provides the runtime SDK host modules for
@makinbakin/sdk/*; you do not need a local Bakin checkout unless you are doing
hot-reload or end-to-end development.
Pin to a released version with the @<ref> suffix:
bakin plugins install github:markhayden/bakin-bits-official#plugins/messaging@messaging-v0.0.1| Plugin | Status | Description |
|---|---|---|
messaging |
active | Content Plans, Deliverables, brainstorm sessions, task-backed prep, and publishing. |
projects |
active | Project specs, checklists, task links, and project MCP tools. |
_template |
scaffold | Starter plugin layout for new contributors. |
| Agent | Status | Description |
|---|---|---|
patch |
active | Developer agent package — git-isolation skill, dev-discipline lessons, workspace templates, avatar. |
pixel |
active | Image artist package — visual prompt lessons, image-generation workflow skills, workspace templates. |
rolo |
active | Video producer package — video/audio craft lessons and declared Runway/ElevenLabs runtime secrets. |
jessica |
active | Research package — source-hierarchy lessons and evidence-gathering workspace templates. |
Plugin dist/ is not committed — it is build output. To ship a plugin
version so users can install it with no toolchain, bump
plugins/<id>/bakin-plugin.json and push a matching <id>-v<semver> tag:
git tag -a messaging-v0.2.0 -m "Add brainstorm export; fix plan ordering"
git push origin messaging-v0.2.0CI validates the version, builds the plugin, assembles a prebuilt artifact + checksum, carries the catalog forward, and creates a GitHub release (notes = your tag message). Install then downloads + verifies the artifact — nothing builds on the user's machine. Full process, versioning rules, and troubleshooting: RELEASE.md.
Agent packages don't need a release.
bakin agents install github:…#agents/<name>installs from source (the cloned subpath) — agent packages ship content, not builtdist/, so they have no artifact build or publish step. Land changes onmainand users get them on their next install.
Clone alongside your Bakin checkout so paths line up, then link a plugin into a running runtime via hot-reload:
git clone git@github.com:markhayden/bakin-bits-official.git
cd bakin-bits-official
bun install
# In your bakin checkout:
BAKIN_DEV_HOTRELOAD=1 bakin start
# Back in this repo:
bakin plugins link ./plugins/_templateBefore opening a PR, run the same gates CI runs:
bun run typecheck && bun run test && bun run lintOfficial plugins should stay on the public SDK surface: @makinbakin/sdk,
@makinbakin/sdk/types, @makinbakin/sdk/components, @makinbakin/sdk/hooks,
@makinbakin/sdk/ui, and @makinbakin/sdk/utils. Do not import Bakin host internals
or a specific runtime adapter from plugin source. Runtime work goes through
ctx.runtime; UI primitives and brainstorm helpers come from the SDK. The
runtime provides these SDK modules when plugins are installed from git subpaths,
so plugin packages should keep @makinbakin/sdk as an external peer instead of
vendoring it.
For durable agent chat surfaces, use stable adapter-neutral thread IDs via
brainstormThreadId(scope, entityId, agentId). Store plugin-owned messages
and tool activity for UI hydration, but let the runtime adapter maintain
conversation continuity for repeated agentId + threadId calls.
For server-side diagnostics and lifecycle messages, use ctx.log from the
plugin context. It emits through Bakin's plugin-scoped structured logger and
keeps reload, activation, and shutdown output in the normal log channels.
Reserve ctx.activity.log for user-visible activity feed entries, and avoid
console.* in plugin server code except as a compatibility fallback.
For plugin-owned recurring jobs, register a hook and create a cron command
using the bakin:<pluginId>:<action> convention. Do not use cron for
task-backed workflow timing. Messaging Plans use explicit activation and
scheduled task records (availableAt) so dispatch remains the single wakeup
path for content prep.
bakin-bits-official/
├── plugins/ # installable plugin packages (one dir per plugin)
├── agents/ # installable agent packages
├── assets/ # shared brand assets (logo, etc.)
├── test/ # shared test setup (DOM globals)
├── test-sdk/ # mock @makinbakin/sdk used during local tests
└── types/ # shared ambient TypeScript types
New plugins and improvements are welcome. Start from plugins/_template,
follow the hot-reload contract, and open a PR against main. The full
contributor flow — manifest rules, hot-reload constraints, review focus
areas, and release tagging — is in CONTRIBUTING.md.
Found a security issue? Please report it privately per SECURITY.md, not as a public issue.
Participation in this project is governed by our Code of Conduct.
MIT — see LICENSE. Plugin and agent-package authors retain copyright on their contributed work; the MIT license applies to the repository scaffold and official packages authored by the Bakin core team.