初始化项目,由ModelHub XC社区提供模型
Model: badtheorylabs/Macaw Source: Original Platform
This commit is contained in:
156
README.md
Normal file
156
README.md
Normal file
@@ -0,0 +1,156 @@
|
||||
---
|
||||
language:
|
||||
- en
|
||||
license: other
|
||||
library_name: transformers
|
||||
license_name: lfm-open-license-v1.0
|
||||
license_link: https://huggingface.co/LiquidAI/LFM2.5-2.6B/raw/main/LICENSE
|
||||
tags:
|
||||
- lfm2
|
||||
- macos
|
||||
- agent
|
||||
- tool-calling
|
||||
- on-device
|
||||
pipeline_tag: text-generation
|
||||
base_model: LiquidAI/LFM2.5-2.6B
|
||||
---
|
||||
|
||||
# 🦜 Macaw
|
||||
|
||||
**The assistant your Mac should have shipped with.**
|
||||
|
||||
Ask for something in plain English and Macaw does it — sends the email, finds the
|
||||
file, reads the PDF, tells you what's eating your battery. It runs entirely on
|
||||
your Mac. Nothing is uploaded, nothing is logged, and there is no account to
|
||||
make.
|
||||
|
||||
Available today. Not a waitlist.
|
||||
|
||||
👉 **[badtheorylabs.com/macaw](https://badtheorylabs.com/macaw)**
|
||||
|
||||
---
|
||||
|
||||
## What you can say to it
|
||||
|
||||
```
|
||||
"email ada the q3 numbers and tell her i approved"
|
||||
"why is my mac slow?"
|
||||
"read ~/Documents/contract.pdf and summarise it in two sentences"
|
||||
"take a screenshot, make a folder called Shots, and move it there"
|
||||
"what's on my screen?"
|
||||
"am i free tomorrow afternoon?"
|
||||
"find my biggest files"
|
||||
```
|
||||
|
||||
It chains steps on its own. *"Take a screenshot, make a folder, move it there"*
|
||||
is three actions from one sentence, and it checks each one worked before moving
|
||||
to the next.
|
||||
|
||||
---
|
||||
|
||||
## What it can reach
|
||||
|
||||
**97 tools**, each one hand-written and tested — not a scrape of every command
|
||||
macOS exposes.
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| ✉️ **Mail** | send, search, reply, unread counts, senders |
|
||||
| 📅 **Calendar** | create events, today's schedule, free slots, next meeting's video link |
|
||||
| 📁 **Files** | Spotlight search, open, move, folder sizes, biggest files, old downloads |
|
||||
| 📝 **Notes & Reminders** | create, append, search, complete, overdue |
|
||||
| 🎵 **Music** | play, pause, skip, by artist, by playlist, shuffle |
|
||||
| 🌐 **Safari & Chrome** | current tab, all tabs, open, search |
|
||||
| 🖥️ **System** | battery, disk, wifi, brightness, dark mode, volume, focus, lock, sleep |
|
||||
| 👀 **Screen** | read what's on screen, record it, screenshot it |
|
||||
| 📄 **Documents** | read and summarise PDFs, Word files, code, plain text |
|
||||
| ⚡️ **Diagnostics** | what's using CPU, what's eating memory, battery health |
|
||||
|
||||
---
|
||||
|
||||
## Private by construction
|
||||
|
||||
Not a policy — an architecture. The model weighs 1.5 GB and lives on your
|
||||
machine. There is no server to send anything to.
|
||||
|
||||
- No cloud, no API keys, no account
|
||||
- No telemetry, no analytics, no crash reporting
|
||||
- Works on a plane
|
||||
- Your mail, files and calendar never leave the device
|
||||
|
||||
---
|
||||
|
||||
## Specs
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Size** | 2.7B parameters · 1.5 GB on disk (4-bit) |
|
||||
| **Memory** | ~2 GB while running |
|
||||
| **Speed** | ~1.2 s per request on an M2 |
|
||||
| **Context** | 128K tokens |
|
||||
| **Requires** | Apple Silicon (M1 or later), macOS 14+ |
|
||||
|
||||
**Two builds:**
|
||||
|
||||
- **[`Macaw-4bit-MLX`](https://huggingface.co/badtheorylabs/Macaw-4bit-MLX)** —
|
||||
1.5 GB, what the app runs. Start here.
|
||||
- **`Macaw`** (this repo) — 5.4 GB BF16, for fine-tuning or serving on a GPU.
|
||||
|
||||
---
|
||||
|
||||
## Run it yourself
|
||||
|
||||
```python
|
||||
from transformers import AutoModelForCausalLM, AutoTokenizer
|
||||
import torch
|
||||
|
||||
tok = AutoTokenizer.from_pretrained("badtheorylabs/Macaw")
|
||||
model = AutoModelForCausalLM.from_pretrained("badtheorylabs/Macaw",
|
||||
dtype=torch.bfloat16)
|
||||
|
||||
messages = [
|
||||
{"role": "system", "content": "You are Macaw, an on-device assistant running on this Mac."},
|
||||
{"role": "user", "content": "what's my battery at?"},
|
||||
]
|
||||
inputs = tok.apply_chat_template(messages, add_generation_prompt=True,
|
||||
return_dict=True, return_tensors="pt")
|
||||
out = model.generate(inputs["input_ids"], max_new_tokens=128)
|
||||
print(tok.decode(out[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True))
|
||||
```
|
||||
|
||||
Pass your tools with `tools=[...]` and it replies with a call:
|
||||
|
||||
```
|
||||
<|tool_call_start|>[battery_status()]<|tool_call_end|>
|
||||
```
|
||||
|
||||
The app in [github.com/Badtheorylabs/Macaw](https://github.com/Badtheorylabs/Macaw)
|
||||
handles the rest — parsing, running, and asking before anything destructive.
|
||||
|
||||
---
|
||||
|
||||
## Measured
|
||||
|
||||
On an Apple M2, 4-bit build:
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| Tool-call accuracy | **10 / 10** on the capability suite |
|
||||
| Request latency | **1.21 s** mean · 0.77 s best |
|
||||
| Decode | ~40 tok/s |
|
||||
|
||||
Method and harness are in the [GitHub repo](https://github.com/Badtheorylabs/Macaw).
|
||||
|
||||
`model.safetensors` SHA-256
|
||||
`966d206651b96446f6a4c415d118049f478a8df79be3fa45bfd04959a4d68be0`
|
||||
|
||||
---
|
||||
|
||||
## License
|
||||
|
||||
Weights derive from [LFM2.5-2.6B](https://huggingface.co/LiquidAI/LFM2.5-2.6B)
|
||||
under the [LFM Open License v1.0](https://huggingface.co/LiquidAI/LFM2.5-2.6B/raw/main/LICENSE).
|
||||
Redistribution keeps that license and Liquid AI's attribution. Commercial use is
|
||||
free below $10M annual revenue. The app and tooling are MIT.
|
||||
|
||||
© 2026 Bad Theory Labs
|
||||
Reference in New Issue
Block a user