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
- Open the Chat tab in the side panel
- In the settings, pick the Free (OVHcloud) provider
- 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:
- Introduction — the basics of modular video synthesis
- Tutorial — step by step
- Sources — osc, noise, shape, voronoi
- Transforms — rotate, scale, pixelate, kaleid
- Blending — blend, add, mult, diff, layer
- Modulation — modulate, modulateScale
- External sources — camera, images, video
- Audio reactivity — linking visuals to sound
- Examples — ready-made visuals
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
@titlemetadata - 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 codestopCode— stop playbackupdateCode— edit the codegetCode— read the current codehighlightCode— highlight a selectionsearchDocs— search the docslistSounds— 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