Thanks for your interest in contributing! We welcome bug reports, feature ideas, documentation improvements, and code contributions.
Please take a moment to read this guide to help streamline the process for everyone.
- Report bugs and regressions
- Suggest enhancements and new features
- Improve documentation and examples
- Triage issues and review pull requests
- Implement fixes and features
Requirements:
- macOS 15.5+
- Apple Silicon (M1 or newer)
- Xcode 16.4+
Build and run:
- Open
osaurus.xcodeprojin Xcode 16.4+ - Select the
osaurustarget and press Run - In the app UI, choose a port (default
8080), then Start - Download a model from the Model Manager to generate text locally
Project layout and API overview are in README.md.
- OpenAI‑compatible DTOs live in
Models/OpenAIAPI.swift(Tool,ToolFunction,ToolCall,DeltaToolCall, etc.). - Prompt templating is handled internally by MLX
ChatSession. Osaurus does not assemble prompts manually. - We rely on MLX
ToolCallProcessorand event streaming fromMLXLMCommon.generateto surface tool calls; we no longer parse assistant text ourselves. - Streaming tool calls are emitted as OpenAI‑style deltas in
Networking/AsyncHTTPHandler.swiftdirectly from MLX tool call events.
- Create a feature branch from
main(e.g.,feat/...,fix/...,docs/...) - Write clear, focused commits; prefer Conventional Commits where practical
- Open a pull request early for feedback if helpful
- Keep PRs small and focused; describe user-facing changes and test steps
- Follow standard Swift naming and clarity guidelines
- Prefer clear, multi-line code over terse one-liners
- Add doc comments for non-obvious logic; avoid redundant comments
- Handle errors explicitly and avoid swallowing exceptions
- Add or update tests in
osaurusTests/where reasonable - Ensure the project builds and tests pass in Xcode before submitting
- Link related issues (e.g.,
Closes #123) - Include screenshots or screen recordings for UI changes
- Update
README.md/docs when behavior or configuration changes - Ensure new public types/functions have clear names and documentation
Please use the "Bug report" issue template and include:
- Steps to reproduce
- Expected vs actual behavior
- Logs or screenshots if relevant
- Environment: macOS version, Apple Silicon chip, Xcode version
Use the "Feature request" issue template and describe:
- The problem you're trying to solve
- Proposed solution or alternatives
- Any additional context or prior art (links welcome)
Please do not create public issues for security vulnerabilities. See SECURITY.md for our security policy and private reporting process.
This project follows the Contributor Covenant. By participating, you agree to uphold our CODE_OF_CONDUCT.md.
Thank you for helping make Osaurus better!