🍞 Bulka Blog

Bulka Blog

Welcome to the Bulka blog, where we keep you posted on the latest changes and events. Subscribe with this RSS link

A free AI agent: no key, no sign-up

The Bulka AI agent is free again. Requests go straight from your browser to OVHcloud AI Endpoints, an open free service with open-weight models (GPT-OSS, Llama, Qwen, Mistral) hosted in the EU.

How to use it

  1. Open the Chat tab in the side panel
  2. In the settings, pick the Free (OVHcloud) provider
  3. Pick a model and talk to the agent

No key, no sign-up, no subscription. It works out of the box.

Good to know

  • Privacy. The request goes from your device straight to OVHcloud: Bulka does not proxy it through its server. The data is not used to train models.
  • Limit. The free tier allows 2 requests per minute (per IP). If you hit the limit, wait ~30 seconds.
  • Need more? Add your own key (OpenAI, Anthropic, Gemini) or OpenRouter in the same settings for higher limits and quality.

Details on the Free AI (OVHcloud) page.

Hydra: fixes and docs

initImage and initVideo fixed

initImage() and initVideo() did not work before: Strudel’s code parsed the URLs wrongly when passing them to Hydra, which broke loading external media.

Now it is fixed:

await initHydra()

// Load an image as a source
await s0.initImage("https://upload.wikimedia.org/wikipedia/commons/2/25/Hydra-Foto.jpg")

src(s0)
  .saturate(2)
  .kaleid(4)
  .out()
await initHydra()

// Load a video as a source
await s0.initVideo("https://example.com/video.mp4")

src(s0)
  .modulate(osc(3), 0.5)
  .out()

Hydra docs

A new Hydra section:

Theme docs and improvements

Editor themes

A new docs page, Editor Themes:

  • The full list of all 40 themes (30 dark, 10 light)
  • Interactive examples of switching with theme()
  • How to make a custom theme
  • The CSS variables explained

Example

// Switch themes in time with the music
$: s("bd sd bd sd")
  .theme("<strudelTheme dracula nord monokai>/4")

Showcase

  • Newest first by default (no shuffle)
  • The shuffle / newest first buttons are still there

Removed

  • The German workshop (de/workshop)
  • Old Strudel blog posts

Updated

  • GitHub links point to timoncool/Bulka
  • “Editor Themes” link in the sidebar
  • The bakery page title is now “Bulka Community Bakery”

UI improvements and an audio recorder

Audio recorder

New feature: audio recording right in the browser!

  • Record button in the header
  • Uncompressed WAV (lossless)
  • File name taken from the @title metadata
  • Correct UI positioning

Volume control

  • Default volume 100% (was 80%)
  • Floating volume slider
  • Synced with the mute state
  • Fixed the check for 0 (falsy)

AI Agent improvements

Streaming

  • Real-time streaming for all providers
  • Proper streaming for thinking blocks
  • Thinking signature captured for Anthropic

Models

  • Models loaded dynamically from the API
  • Models without tool support are filtered out
  • Fixed support for the GPT-5 series
  • Removed the unsupported reasoning_effort

UI/UX

  • Version and commit hash in the header
  • More space between header items
  • Removed the Mastodon link
  • Updated the AI agent docs

Bulka AI Agent

The main update of the day is the AI Music Agent for vibe-coding music!

AI Agent

Multi-provider support

  • OpenAI: GPT-4.1, GPT-5, GPT-5.1, o3-mini
  • Anthropic: Claude 4.5 Sonnet, Claude Opus 4.5
  • Gemini: Gemini 2.5 Pro, Gemini 2.5 Flash

Features

  • Chat interface in the side panel
  • Tool calling to control the code
  • RAG search across the docs
  • Real-time response streaming
  • Extended thinking for Claude
  • Reasoning summaries for GPT-5.1
  • Chat saved in localStorage

Agent tools

  • runCode — run the code
  • stopCode — stop playback
  • updateCode — edit the code
  • getCode — read the current code
  • highlightCode — highlight a selection
  • searchDocs — search the docs
  • listSounds — list the available sounds

Docs

  • Full docs in Markdown for RAG
  • All code examples added to the EN docs
  • Duplicate tracks removed from the Gallery
  • Complex community examples added

UI/UX

  • Artifact-style code editing
  • Markdown rendering in the chat
  • ChatTab colors match the other tabs
  • Vercel adapter for the server-side API

Fixes

  • Correct path for RAG search
  • Correct default models
  • Models without tool support are filtered out

Bulka: a Russian fork of Strudel

Today we launched Bulka, a Russian-language fork of Strudel, the platform for live coding music in the browser.

What’s new

Rebranding

  • New name: Bulka (🍞)
  • New logo and favicon
  • Russian-language interface

Localization

  • The whole interface translated into Russian
  • Russian docs and tutorials
  • Built-in API reference in Russian

Local samples

  • Dirt-Samples added (~486MB)
  • Tidal-drum-machines for drum machines
  • 100% local playback without CORS problems

New default track

  • “Pixel Sunrise” by Nerual Dreming as the starting track
  • RolandTR808 drum machines load globally