The tool hub for your local AI.
Curated, one-tap installable tools that extend what your MyLLM iOS app can do. Every install asks for confirmation first — nothing runs without your tap.
New to MyLLM Tools?
Everything you need to install your first tool, build your own, or hook up an MCP server.
What are tools?
JS snippets the on-device model can call. They run sandboxed, locally, and only do what you can read.
Install your first tool
One tap on any catalogue card opens MyLLM and shows a confirmation sheet — install in under a minute.
Build your own
Write JS that calls fetch() or pure local logic, then submit it. See the JSON spec further down.
Tools vs MCP
Tools are in-app JS. MCP servers are external programs MyLLM connects to. Use both for full coverage.
Skills
Reusable SKILL.md instructions the model loads on demand. One tap to install a starter skill.
MyLLMos apps
Mini-apps for the home screen inside MyLLM. Install a starter with one tap, or ask the model to build your own.
Browse the catalogue
Filter by theme or search across names, descriptions, tags, and parameter docs.
No tools match your filters.
How it works
From discovery to a working tool in three taps — and never without a confirmation.
-
01
Browse
Search by name or tag, or pick a theme chip — Research, Science, Finance, News, Developer, Productivity, Fun.
-
02
Tap Install
Every Install button — tool, skill, or app — is a
myllm://deep link carrying the item's data. iOS hands it straight to the MyLLM app. -
03
Confirm
MyLLM previews the tool's name, description, and whether it needs network access, then waits for your tap. Nothing is added silently.
No iPhone handy? Tap Copy JSON on any card and paste it into Settings → About → Tools Available → ⋯ → Import from JSON later. The catalogue works the same way on iPad.
Starter skills
Skills are reusable instructions in the open Agent-Skill format (a SKILL.md the model loads on demand). Tap Install skill to add one to MyLLM, then just ask for the task — the model loads the skill automatically.
This list is published from the open TeamDzX/myllm-skills repo, so it stays current automatically. Each Install skill button is a myllm://install-skill deep link — the same mechanism the tools above use — and the app always asks you to confirm first. Prefer chat? Run /skill add teamdzx/myllm-skills once, then /skill install <name>@teamdzx. And in the latest MyLLM you can browse and install this same catalogue right inside the app: MyLLMos → Skills — or ask the assistant to research a topic and write you a new skill itself.
MyLLMos app gallery
MyLLMos is the home screen inside MyLLM where AI-made apps live — games, tools, even apps that think with your own model. Over a hundred apps, one tap to install.
Space Range (a 3D shooter) · Everquill (AI adventure) · Reflect (AI journal) · language tutors · games · and 100+ more. Also inside the app: MyLLMos → App Gallery.
Using Claude, ChatGPT, or Gemini? Send their creations here
Apps and documents generated in other AI chats get buried in the conversation. MyLLMos gives them a home: share the generated code or text to MyLLM from any app's share sheet and choose Save as App or Save to Documents. Teach your AI to package things properly with this skill — add it as a Skill, custom instruction, or project note, then just say “make this a MyLLM app”.
The “send-to-myllm” skill — copy into Claude, ChatGPT, or any AI
---
name: send-to-myllm
description: Package web apps and documents so the user can save them into the MyLLM iOS app (MyLLMos home screen) via the share sheet.
---
# Send creations to MyLLM
Use when the user says "send this to MyLLM", "make this a MyLLM app", "save this to MyLLMos", or similar.
## Interactive apps
Produce ONE complete, self-contained HTML document:
- Inline CSS/JS only, no external resources; include <meta name="viewport" content="width=device-width, initial-scale=1">.
- Give it a real <title> — MyLLM uses it as the app's name on the home screen.
- Respect dark mode (prefers-color-scheme).
- For data that must survive relaunches use MyLLM's async bridge, feature-detected: if (window.myllmStorage) { await myllmStorage.setItem(key, stringValue); const v = await myllmStorage.getItem(key); } — localStorage does NOT persist there.
- Optional, also feature-detect: await myllmAsk(prompt) calls the user's own model and resolves to text; await myllmFetch(url, {method, headers, body}) for network; myllmHaptic('light'|'medium'|'success'|'error') for vibration.
Then tell the user: select the whole code block → Share → MyLLM → Save as App in MyLLMos.
## Documents
Produce clean Markdown with a # title heading — MyLLM uses it as the document name.
Then tell the user: select the text → Share → MyLLM → Save to Documents.
Get MyLLM Connect for your computer
The free desktop companion that turns your Mac or PC into your iPhone's private AI backend. Install it, scan one QR code, and chat with your own models over a trusted, encrypted link — at home or anywhere. No port forwarding, no certificate wrangling, no cloud in the middle.
Windows: .exe installer · macOS: signed & notarized universal .dmg (Apple Silicon + Intel). Free & open source (Apache-2.0), locked to your paired MyLLM app.
Pairing takes one scan: install → open → Share with my phone → scan the QR in MyLLM → Settings → Connection → Pair a Backend. Your prompts go straight from your phone to your own machine — they never touch anyone's cloud. Without your phone's access key, the endpoint answers every request with a locked door.
What hardware do you need to run the models?
Connect just bridges your phone to a model runner on your computer (Ollama, LM Studio, llama.cpp, and similar). What you can load depends on that machine — chiefly its memory. These figures assume the common Q4 quantization (the quality/size sweet spot):
| Model size | RAM / VRAM needed | Good for |
|---|---|---|
| 7–8B | ~6–8 GB | Fast everyday chat on a laptop |
| 13–14B | ~10–12 GB | Stronger reasoning, still consumer-friendly |
| 30–34B | ~20–24 GB | High quality — needs a 24 GB GPU or 32 GB Mac |
| 70B | ~40–48 GB | Top tier — workstation GPU or 64 GB+ Mac |
Apple Silicon counts unified memory as VRAM — a 16 GB Mac comfortably runs 7–8B, 32 GB handles 14B, 64 GB+ for 30B and up. A dedicated GPU (or Apple Silicon) is strongly recommended; CPU-only works but is far slower. Rule of thumb: a Q4 model needs roughly params (in B) × 0.7 GB, plus a little headroom for context.
Submit a tool
Built something useful? We accept community contributions for the catalogue. Email a single JSON object (one tool per submission) to tools@opticell-limited.com and we'll review, test on-device, and publish it — with credit to you.
Before submitting: make sure the tool calls only public endpoints (no API keys baked in), handles errors gracefully, and returns a JSON-serialisable object. Keep timeout realistic and only set allowsNetwork: true if the tool actually makes HTTP requests.
Required JSON format
{
"name": "your_tool_name",
"primaryTheme": "research",
"tags": ["research", "example"],
"description": "What the tool does and when the model should call it. Be specific — the LLM uses this to decide whether to invoke it.",
"timeout": 15,
"allowsNetwork": true,
"parameters": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Describe each parameter clearly, with examples."
}
},
"required": ["query"]
},
"code": "var q = (args.query || '').trim();\nif (!q) return { error: 'Missing query' };\n\n// Use fetch() to call public APIs. Return a plain JS object.\nvar resp = fetch('https://api.example.com/search?q=' + encodeURIComponent(q));\nif (!resp || resp.status < 200 || resp.status >= 300) return { error: 'Request failed' };\n\nvar body = typeof resp.body === 'string' ? JSON.parse(resp.body) : resp.body;\nreturn { query: q, results: body };"
}
Field reference
name— snake_case identifier the model uses to call the tool. Must be unique.primaryTheme— one of:research,science,finance,news,developer,productivity,fun.tags— short string array for filtering. IncludeprimaryThemeas the first tag.description— written for the LLM. Explain what it does and when to use it.timeout— seconds before the call is aborted. Typical range: 5–30.allowsNetwork—trueif the code callsfetch(), otherwisefalse.parameters— JSON Schema for the tool's inputs. Userequiredfor mandatory fields.code— JavaScript body. Receivesargs(parsed parameters) and the globalfetch(). Mustreturna JSON-serialisable value (or{ error: "..." }).
Email your tool to tools@opticell-limited.com
Image & video generation
Generate images and video on your own ComfyUI server — no cloud, no per-image fees. Point MyLLM at the server once, then create from the in-app Create screen. Step-by-step setup, with the exact model files: Run your own image server.
Images use FLUX.2-klein; video uses Wan 2.2 TI2V-5B (text-to-video, running entirely on your own machine). You supply the server; MyLLM ships both workflows built-in, so most people never touch a line of JSON.
| Component | Bare minimum (works, slower) | Recommended |
|---|---|---|
| NVIDIA GPU (VRAM) | 8 GB — FP8 checkpoints + offload | 16–24 GB (RTX 4070 Ti Super / 4080 / 4090, 3090) |
| Apple Silicon | M-series, 16 GB unified memory | M-Pro / Max, 32 GB+ unified |
| System RAM | 24 GB | 32 GB+ |
| Free disk (SSD) | 30 GB | 50 GB+ — checkpoints are large |
Video is heavier than images. Wan 2.2 TI2V-5B fits in ~8 GB with ComfyUI's CPU offload, but at that level expect short, low-resolution clips and long waits — 16 GB+ makes it practical. Black Forest Labs' official FP8 / NVFP4 Klein checkpoints cut image VRAM by 40–55%. No NVIDIA or Apple Silicon GPU? It can fall back to CPU, but generation goes from seconds to many minutes.
Connect a server
- In MyLLM open Settings → Image & Video Generation.
- Enter your ComfyUI URL (e.g.
https://comfy.example.com). Use HTTPS, or HTTP only on your LAN. - Paste your Bearer token if the server requires one — it's stored in the iOS Keychain, never in plain settings.
- Tap Test ComfyUI. A green check means you're ready.
That's the whole setup. Open the Media screen, choose Image or Video, type a prompt, and generate. The on-screen controls — size, frames, FPS, steps, CFG, and seed — drive the built-in workflow, so you get full control without editing anything.
Private by design. Generation runs on the server you point to — typically your own Mac/PC or home GPU box. Nothing leaves your device except the prompt sent to that server; there's no MyLLM cloud in the middle.
Bring your own workflow (optional)
Want a bespoke pipeline — a different model, sampler, or resolution ladder? Build the graph in ComfyUI, then Save → Export (API Format) to copy its JSON. In MyLLM go to Settings → Image & Video Generation → Custom workflow JSON…. There are two independent slots — Image and Video — so pasting a video graph never disturbs image generation. Paste, tap Save. Leave a slot blank to fall back to the built-in default.
Which fields a pasted video workflow should expose
MyLLM feeds the on-screen controls into specific nodes of your graph. Match these node IDs / input keys and the sliders will drive your workflow:
- Positive prompt →
4.text - Negative prompt →
5.text - Width / height →
7.width/7.height(multiples of 32) - Frame count →
7.length— must be 4·N + 1 (e.g. 25, 49, 121) - Seed / steps / CFG →
8.seed/8.steps/8.cfg - Frame rate →
10.frame_rate
If your graph uses different node IDs, the video still generates — it just ignores the sliders and uses the values baked into your JSON. So either match the IDs above, or set your preferred values inside the graph before exporting. (The same screen documents the image-workflow fields too.)
The server must have the models loaded. A pasted workflow only runs if the server actually has the checkpoints it references (e.g. wan2.2_ti2v_5B for video). If a model name doesn't match what's installed, ComfyUI rejects the job — check the model file names on your server first.
Hand someone a ready-made setup
Don't want anyone typing URLs or pasting JSON? In Settings, switch on Show developer options, then in Share Configuration, Export Configuration… writes a single JSON file with the server URL, your custom workflows, and (optionally) the token. Another person imports it via Import Configuration… and is generating in seconds — ideal for setting up a family's or team's phones from one config.
Recommended MCP servers
Beyond the JS tools in the catalogue above, MyLLM can connect to Model Context Protocol (MCP) servers — programs that expose tools, resources, and prompts over a standard protocol. Add one in Settings → MCP Servers by URL. MyLLM uses the Streamable HTTP transport, so the server must be reachable over HTTP(S); stdio-only servers need a bridge.
Remote servers — no self-hosting needed
- GitHub — read your repos, browse code, open/comment on issues, search across orgs. The single most useful install for any developer. OAuth on first connect.
- Linear — query, create, and triage issues from your team's board. OAuth.
- Atlassian (Jira / Confluence) — ticket and wiki access. Useful if your work lives in Atlassian.
- Notion — read and write pages in a workspace; great for note-taking and personal knowledge bases. OAuth.
- Stripe — query customers, charges, subscriptions, and invoices. Read-only mode available; recommended for safety on a phone.
- Sentry — pull production errors and issue details. Lets the model answer "why did production break?" without leaving the app.
- Cloudflare — Cloudflare hosts several remote MCP servers (Docs, Workers AI, browser rendering, R2, KV). The Docs server is a low-stakes first install.
- Hugging Face — search models/datasets/spaces and run light inference. Useful for ML and AI questions.
- Context7 (Upstash) — up-to-date documentation for thousands of programming libraries (React, Next.js, Django, FastAPI, Tailwind, and many more). Free, no account required. Perfect companion to the GitHub MCP for coding questions.
- DeepWiki (Cognition) — ask natural-language questions about any indexed public GitHub repository ("how does authentication work in repo X?"). Free, no account required.
Self-hosted — for users with a home server
No GPU needed here. Unlike running a model (see Connect) or image generation, MCP servers are lightweight — the heavy lifting happens elsewhere. Any always-on machine does the job: an old laptop, a Raspberry Pi, or a small VPS with 1–2 GB RAM is plenty.
- Brave Search — replace hallucinated web answers with real search results. Free API tier; run the server on a Mac or VPS and expose to the iPhone via Tailscale or Cloudflare Tunnel.
- Filesystem / Obsidian / Joplin — point the LLM at your local notes. Most are stdio-only, so run them behind a stdio → HTTP bridge such as
mcp-proxy.
Verify before installing. The MCP ecosystem moves quickly — endpoint URLs, auth flows, and tool names change month-to-month. Confirm the current connection details at the official provider page, or browse a community directory such as modelcontextprotocol.io or lawve.ai/en/mcp-servers before adding a server.
Tip for self-hosting. Most reference MCP servers in github.com/modelcontextprotocol/servers use stdio. To use them from iOS, run them on a Mac or Linux box and expose with a bridge such as mcp-proxy, then reach them from MyLLM over Tailscale or a Cloudflare Tunnel.
FAQ
Common questions about tools, security, and how MyLLM runs them.
Are tools safe to install?
Every install shows a confirmation sheet with the tool's name, description, and whether it needs network access. Nothing is added or executed without your tap. Tools run in MyLLM's sandboxed JavaScript runtime — they cannot read your files, contacts, photos, or other apps' data unless MyLLM itself exposes a specific API for that, and you can revoke any tool from Settings → Tools at any time.
Do tools send my data to a cloud?
Only if the tool itself calls fetch() to a remote URL — and in that case the install sheet flags it with a "needs network" warning. Tools without allowsNetwork: true are pure on-device computation. The MyLLM app does not phone home and does not have analytics; everything else stays on your device or your own LLM server.
Can I use these tools without an internet connection?
Yes — every tool without allowsNetwork works fully offline. That includes the calculator, algebra solver, statistics summary, prime factorization, JSON/CSV/Base64/URL encoders, markdown → HTML, JWT decode, regex tester, password generator, and more. Network tools only fire if you have connectivity.
What's the difference between a tool and an MCP server?
A tool is a self-contained JavaScript snippet that lives inside MyLLM and runs on-device. An MCP server is an external program (often hosted by a service like GitHub, Notion, or Linear) that MyLLM connects to over HTTP. Use tools for fast, private, deterministic operations. Use MCP for live access to external services and your own self-hosted resources.
Can I edit a tool after installing?
Yes — in MyLLM go to Settings → Tools, tap the tool, and edit its name, description, code, or parameters. You can also export it back to JSON to share, or delete it entirely.
Can MyLLM generate images or video?
Yes — MyLLM creates images (FLUX.2-klein) and video (Wan 2.2 TI2V-5B) on your own ComfyUI server, with no cloud and no per-image fees. Add the server's URL and token under Settings → Image & Video Generation, tap Test ComfyUI, and generate from the in-app Media screen. You can also paste your own ComfyUI workflow (separate slots for image and video) for a fully custom pipeline. See Image & video generation for the full walkthrough.
How do I submit my own tool?
Write the JSON object following the spec in the Submit a tool section above, then email it to tools@opticell-limited.com. We test on-device, then publish to the catalogue with credit to you.
Will Apple let MyLLM run arbitrary JavaScript?
Yes — the tool runtime uses Apple's JavaScriptCore framework, which is explicitly sanctioned for in-app interpreted JS. There's no remote code download in the App Store sense: tools are JSON payloads describing parameters and a JS body, installed only after your explicit confirmation, and run only when the on-device LLM decides to call them.