Parallel async delegates were causing 'database is locked' errors due to concurrent write operations (create_session, add_message) competing for SQLite's single writer lock. Solution: Add a tokio::sync::Mutex to SessionStorage that serializes all write operations. This gracefully handles intra-process contention while SQLite's busy_timeout (5s) handles any cross-process scenarios. Protected methods: - create_session - add_message - apply_update - replace_conversation - delete_session - truncate_conversation - update_message_metadata
goose is your on-machine AI agent, capable of automating complex development tasks from start to finish. More than just code suggestions, goose can build entire projects from scratch, write and execute code, debug failures, orchestrate workflows, and interact with external APIs - autonomously.
Whether you're prototyping an idea, refining existing code, or managing intricate engineering pipelines, goose adapts to your workflow and executes tasks with precision.
Designed for maximum flexibility, goose works with any LLM and supports multi-model configuration to optimize performance and cost, seamlessly integrates with MCP servers, and is available as both a desktop app as well as CLI - making it the ultimate AI assistant for developers who want to move faster and focus on innovation.
Quick Links
Need Help?
a little goose humor 🦢
Why did the developer choose goose as their AI agent?
Because it always helps them "migrate" their code to production! 🚀