{"id":29427435,"url":"https://github.com/boundaryml/baml","last_synced_at":"2026-05-07T01:17:01.972Z","repository":{"id":205907859,"uuid":"701494311","full_name":"BoundaryML/baml","owner":"BoundaryML","description":"The AI framework that adds the engineering to prompt engineering (Python/TS/Ruby/Java/C#/Rust/Go compatible)","archived":false,"fork":false,"pushed_at":"2026-04-30T00:47:54.000Z","size":598674,"stargazers_count":8091,"open_issues_count":257,"forks_count":413,"subscribers_count":32,"default_branch":"canary","last_synced_at":"2026-04-30T02:26:45.055Z","etag":null,"topics":["baml","boundaryml","guardrails","llm","llm-playground","playground","prompt","prompt-config","prompt-templates","structured-data","structured-generation","structured-output","vscode"],"latest_commit_sha":null,"homepage":"https://docs.boundaryml.com","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BoundaryML.png","metadata":{"files":{"readme":"README-DEV.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-10-06T18:57:41.000Z","updated_at":"2026-04-30T00:11:13.000Z","dependencies_parsed_at":"2023-12-18T19:04:46.704Z","dependency_job_id":"87782405-cb45-44d3-8ae5-c108d7f8bed9","html_url":"https://github.com/BoundaryML/baml","commit_stats":{"total_commits":1598,"total_committers":31,"mean_commits":51.54838709677419,"dds":0.7759699624530663,"last_synced_commit":"22e6bbb7dbe125b40f72d37e6fb8a73e603aade8"},"previous_names":["gloohq/baml","boundaryml/baml"],"tags_count":442,"template":false,"template_full_name":null,"purl":"pkg:github/BoundaryML/baml","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BoundaryML%2Fbaml","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BoundaryML%2Fbaml/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BoundaryML%2Fbaml/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BoundaryML%2Fbaml/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BoundaryML","download_url":"https://codeload.github.com/BoundaryML/baml/tar.gz/refs/heads/canary","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BoundaryML%2Fbaml/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32593948,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T22:12:39.696Z","status":"online","status_checked_at":"2026-05-04T02:00:06.625Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["baml","boundaryml","guardrails","llm","llm-playground","playground","prompt","prompt-config","prompt-templates","structured-data","structured-generation","structured-output","vscode"],"created_at":"2025-07-12T13:02:05.282Z","updated_at":"2026-05-04T04:03:49.692Z","avatar_url":"https://github.com/BoundaryML.png","language":"Rust","funding_links":[],"categories":["Inference","Workflow Frameworks"],"sub_categories":["Output","[BAML](https://github.com/boundaryml/baml)"],"readme":"# Development Setup Guide\n\nThis guide provides detailed instructions for setting up your BAML development environment.\n\n## Quick Start\n\n```bash\n# Clone the repository\ngit clone https://github.com/BoundaryML/baml.git\ncd baml\n\nmise trust\npnpm setup-dev\npnpm clean:ws\npnpm install\npnpm typecheck\npnpm build\n\n# Start developing!\npnpm dev\n```\n\n## Tool Management with mise\n\nWe use [mise](https://mise.jdx.dev/) (formerly rtx) as our polyglot tool version manager. This ensures all developers use the exact same versions of tools, preventing \"works on my machine\" issues.\n\n### What is mise?\n\nmise is a tool version manager that can handle multiple programming languages and tools in one place. It replaces the need for nvm, rbenv, pyenv, rustup, and other version managers.\n\n### Configuration\n\nOur tool versions are defined in `mise.toml`:\n\n```toml\n[tools]\nrust = \"1.88.0\"\ngo = \"1.23\"\npython = \"3.12\"\nruby = \"3.2.2\"\nnode = \"lts\"\n# ... and more\n```\n\n### Common mise Commands\n\n```bash\n# List all installed tools\nmise list\n\n# Install/update all tools to match mise.toml\nmise install\n\n# Show current tool versions\nmise current\n\n# Upgrade tools to latest versions (respecting version constraints)\nmise upgrade\n\n# Trust the configuration file (required after changes)\nmise trust\n```\n\n## Manual Setup (Not Recommended)\n\nIf you prefer to install tools manually or need to understand what the setup script does:\n\n### Required Tools\n\n1. **Rust** (1.88.0)\n   ```bash\n   curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\n   rustup install 1.88.0\n   rustup default 1.88.0\n   ```\n\n2. **Go** (1.23)\n   - Download from https://golang.org/dl/\n   - Install protoc-gen-go: `go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.36.6`\n\n3. **Python** (3.12)\n   - Install Python 3.12\n   - Install uv: `curl -LsSf https://astral.sh/uv/install.sh | sh`\n\n4. **Ruby** (3.2.2)\n   - Install Ruby 3.2.2\n   - Install bundler: `gem install bundler`\n\n5. **Node.js** (LTS)\n   - Install Node.js LTS\n   - pnpm will be installed via mise\n\n### Platform-Specific Dependencies\n\n**macOS:**\n```bash\nbrew install libyaml openssl@3\n```\n\n**Linux:**\nDependencies vary by distribution. The setup script will guide you.\n\n## Development Workflow\n\n### Running Everything\n\n```bash\n# Start all services with hot reloading\npnpm dev\n\n# Run only specific components\npnpm dev:vscode       # VSCode extension\npnpm dev:playground   # Web playground\npnpm dev:language-server  # Language server\n```\n\n### Building Specific Components\n\nAfter the TypeScript refactor, use these commands:\n\n```bash\n# Build everything\npnpm build\n\n# Build specific apps\npnpm build:fiddle-web-app  # Web playground app\npnpm build:vscode         # VSCode extension\npnpm build:playground     # Playground package\npnpm build:cli           # CLI tool\n\n# Release commands\npnpm release:fiddle-web-app  # Release web app\npnpm release:vscode         # Release VSCode extension\npnpm release:cli           # Release CLI\n```\n\n### TypeScript Project Structure\n\nThe TypeScript codebase follows a monorepo structure:\n\n```\ntypescript/\n├── apps/                    # All applications\n│   ├── fiddle-web-app/     # Web playground\n│   └── vscode-ext/         # VSCode extension\n├── packages/               # All reusable packages\n│   ├── ui/                # Shared UI components\n│   ├── common/            # Common utilities\n│   ├── playground-common/ # Playground shared code\n│   ├── language-server/   # Language server\n│   └── ...               # Other packages\n└── workspace-tools/       # Build and config tools\n```\n\n### Running Tests\n\n```bash\n# Run all tests\n./run-tests.sh\n\n# Run specific language tests\ncd integ-tests/typescript \u0026\u0026 pnpm test\ncd integ-tests/python \u0026\u0026 uv run pytest\ncd integ-tests/ruby \u0026\u0026 rake test\n```\n\n### Building\n\n```bash\n# Build everything\npnpm build\n\n# Build specific components\ncargo build --release    # Rust components\npnpm build              # TypeScript components\n```\n\n## Troubleshooting\n\n### mise Issues\n\n**\"mise: command not found\"**\n- The setup script installs mise to `~/.local/bin`. Make sure this is in your PATH.\n- Try: `source ~/.bashrc` or `source ~/.zshrc`\n\n**\"mise trust required\"**\n- Run: `mise trust` in the project root\n\n**Tool version conflicts**\n- Run: `mise doctor` to diagnose issues\n- Try: `mise install --force` to reinstall tools\n\n### Language-Specific Issues\n\n**Rust compilation errors**\n- Ensure you're using the correct Rust version: `rustc --version`\n- Clear cargo cache: `cargo clean`\n\n**Go module errors**\n- Clear module cache: `go clean -modcache`\n- Ensure GOPATH is set correctly\n\n**Python/uv issues**\n- Clear uv cache: `uv cache clean`\n- Reinstall dependencies: `uv sync --reinstall`\n\n**Ruby/bundler issues**\n- Clear bundler cache: `bundle clean --force`\n- Reinstall gems: `bundle install --force`\n\n### Getting Help\n\n1. Check the [CONTRIBUTING.md](./CONTRIBUTING.md) guide\n2. Search existing [GitHub issues](https://github.com/BoundaryML/baml/issues)\n3. Ask in our [Discord #contributing channel](https://discord.gg/BTNBeXGuaS)\n\n### IDE Setup\n\n**VSCode:**\n- Install recommended extensions when prompted\n- mise tools will be automatically detected\n\n**IntelliJ/RustRover:**\n- Configure SDK paths to use mise-installed versions\n- Go: `~/.local/share/mise/installs/go/1.23/`\n- Rust: `~/.local/share/mise/installs/rust/1.88.0/`\n- Python: `~/.local/share/mise/installs/python/3.12/`\n- Ruby: `~/.local/share/mise/installs/ruby/3.2.2/`\n\n**Other IDEs:**\n- Point to tool installations in `~/.local/share/mise/installs/`\n\n## Keeping Your Environment Updated\n\nWhen other developers update tool versions:\n\n1. Pull the latest changes\n2. Run: `mise install`\n3. Restart your terminal/IDE if needed\n\nThe setup script can be run anytime to ensure your environment is up to date.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fboundaryml%2Fbaml","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fboundaryml%2Fbaml","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fboundaryml%2Fbaml/lists"}