Troy fine-tunes and preference-tunes LLMs locally on Apple Silicon. Write one YAML file, run troy train, then chat, eval, serve an OpenAI-compatible API, or export to GGUF/Ollama and even iPhone apps. Built on MLX. No CUDA, no cloud, no pipeline.
Hey Product Hunt ๐
I built Troy because fine-tuning felt way harder than it needed to be. Every guide assumed a CUDA GPU or a cloud account, while the M-series MacBook on my desk sat there with unified memory that can comfortably train a 14B model.
Troy is a CLI that makes local fine-tuning boring, in the best way:
- One YAML file is the whole interface. Base model, data path, LoRA params โ that's it. troy train does the rest.
- No dataset? Synthesize one. troy data synth --from ./docs uses a local teacher model to write training data from your own files.
- Close the loop on-device. troy chat to talk to the result, troy eval for base-vs-tuned comparison, troy serve for an OpenAI-compatible API at localhost.
- Ship it anywhere. Export to GGUF for Ollama/LM Studio, push to Hugging Face, or troy export -f ios to package the model for iPhone/iPad apps.
- Troy Mesh (my favorite part): idle iPhones on your Wi-Fi join as workers and generate training data with a local teacher model while your Mac coordinates and trains. Your phone literally writes the dataset.
It supports SFT, DPO, ORPO, and vision-language models, and runs any architecture mlx-lm supports (Llama, Qwen, Gemma, Phi, Mistralโฆ). A 36 GB MacBook handles models that need a workstation GPU anywhere else.
Install: brew install avirajkhare00/troy/troy
It's open source (Apache-2.0). I'd love to hear what you'd fine-tune first โ and if you hit anything weird, troy doctor output in an issue gets you a fast fix. ๐