logging

Locate, read, filter, and write structured JSON logs for Birdhouse and OpenCode processes.

36|5|Updated Feb 27, 2026
One-click install
npx skills add https://github.com/Birdhouse-Labs/birdhouse --skill logging-birdhouse-labs
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: logging
Source: https://github.com/Birdhouse-Labs/birdhouse/tree/main/.agents/skills/internal/birdhouse-development/logging
Command: npx skills add https://github.com/Birdhouse-Labs/birdhouse --skill logging-birdhouse-labs

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Developers working on Birdhouse struggle to find the right log files across dev and prod modes, and often write inconsistent log entries. This Skill documents exactly where Birdhouse server logs and OpenCode process logs live, how to filter them with jq and grep, and how to write correctly structured log entries in server code. ## Core Features & Use Cases - Log Location Reference: Maps log file paths for dev vs prod modes, covering both Birdhouse server logs and per-workspace OpenCode logs. - Filtering Recipes: Provides ready-to-use jq and grep commands to filter by workspace, subsystem, level, or message content. - Logging Conventions: Defines subsystem loggers (server, api, stream, opencode, frontend), log levels, and verbosity tuning via SUBSYSTEM_LEVELS and LOG_LEVEL environment variables. - Use Case: When debugging why an OpenCode instance failed to spawn in dev mode, tail the dev log filtered by the opencode subsystem and workspace ID to isolate the error. ## Quick Start Ask the agent to show today's Birdhouse dev logs filtered to error-level entries for a specific workspace.

Frequently Asked Questions about logging

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
Where are Birdhouse logs stored on macOS?▼

Birdhouse logs live in ~/Library/Logs/Birdhouse/ as daily rotating JSON files, named birdhouse-dev-YYYY-MM-DD.log in dev mode and birdhouse-YYYY-MM-DD.log in prod. Files are deleted after 7 days.

How do I filter JSON logs by subsystem or level?▼

Pipe the log file through grep to match fields like '"subsystem":"server"' or '"level":"error"', then pipe to jq for readable output. You can also filter by workspaceId to isolate a single workspace.

Where do OpenCode logs go in dev vs prod mode?▼

In dev mode, OpenCode writes to a per-workspace file under ~/Library/Application Support/Birdhouse/workspaces/<id>/engine/logs/opencode.log. In prod, OpenCode stdout and stderr are captured inside the Birdhouse log under the opencode subsystem.

How do I change log verbosity for a specific subsystem?▼

Set the SUBSYSTEM_LEVELS environment variable, for example SUBSYSTEM_LEVELS=stream:trace,api:silent bun run dev. Use LOG_LEVEL=trace for a global override across all subsystems.

Which log level should I use when writing server code?▼

Use info for normal lifecycle events, warn for recoverable issues, error for failures, debug for detailed flow in dev, and trace for high-frequency events. Import the pre-configured subsystem loggers from logger.ts rather than creating a new pino instance.