English | 中文
DeepSeek in minutes. Local small models turned into real productivity.
MA is a terminal coding agent built around two practical promises: remote setup should be brainless, and local small models should become useful production tools. DeepSeek config is interactive and direct. LM Studio/Qwen gets long-context handling, tool hardening, model switching, and benchmark-driven fixes so small models can do real repo work.
v0.3.0 supports LM Studio local models, DeepSeek official API, and Agora through MCP stdio. Agora is MA's local-first provider integration: it exposes real model-loading and MemoryPatch state instead of pretending memory was added to a prompt.
Website: https://zimoos.github.io/my-agent/
Release: https://github.com/zimoos/my-agent/releases/tag/v0.3.0
Roadmap · Changelog · Contributing · Discussions
See MA Showcase for recorded MA + Agora runs with the exact prompt, generated artifact, verification command, and terminal GIF. Each showcase entry is an auditable example, not a benchmark claim.
After ma init, try MA in a trusted project without changing anything:
ma run --prompt "Read this project's README and package.json. Tell me how to start and test it. Do not modify files."That gives a new user an observable first result before they ask the agent to edit code. For a browser-interaction example with the prompt, generated artifact, and verifier included, see MA Showcase.
- Local small models become productive: MA's alpha gate runs 70 L0-L2 tasks through a local Qwen3-30B model via LM Studio.
- DeepSeek is the zero-friction fallback:
ma initgives LM Studio and DeepSeek the same arrow-key setup flow, stores remote keys safely, and leaves you with a working profile instead of a config chore. - Near-infinite working room: MA auto-detects context windows, tracks usage, compresses output, and is designed for long local-agent loops.
- Small-model hardening is the product: Qwen/LM Studio-specific sampling, image payload compatibility, tool-call recovery, and prompt/message integrity are treated as release gates.
- Agent tools are built in: shell, file read/write, structured edits, grep, and web are available immediately after init.
Most terminal AI tools assume the hosted model is the product. MA assumes the workflow is the product: configure DeepSeek without thinking, then make local Qwen useful enough to keep running real tasks without worrying about token cost.
That means the product priorities are different:
- DeepSeek setup that writes a usable profile in one pass
- local model profiles instead of one global model string
- benchmark gates for local small-model productivity instead of vibe-only demos
- Keychain-backed secrets instead of plaintext API keys
- repo-local instructions, skills, and tool loops tuned for small models
MA uses benchmark data as product evidence: local Qwen3-30B through LM Studio passes the alpha L0-L2 release gate.
| Model | Runtime | Tasks | L0 | L1 | L2 |
|---|---|---|---|---|---|
| Qwen3-30B local | LM Studio | 70 | 100% | 98.7% | 95.3% |
This benchmark is the proof point for the claim: local small models can become useful with enough agent-loop engineering. It covers connectivity, stable tool use, and multi-turn local project work. It is not a universal coding-agent leaderboard.
See docs/benchmark-results.md.
Download the release asset for your platform:
ma-*-macos-arm64.tar.gzma-*-linux-x64.tar.gzma-*-windows-x64.zip
macOS / Linux:
tar -xzf ma-*.tar.gz
cd ma-*
./ma init
./maWindows:
Expand-Archive ma-*.zip
cd ma-*
.\ma.cmd init
.\ma.cmdThe portable bundle includes Node.js and production dependencies. No global Node or npm install is required.
git clone https://github.com/zimoos/my-agent.git
cd my-agent
npm install
npm run build
npm link
ma init
mama init
maDuring init:
- Choose model source: LM Studio local or DeepSeek official.
- Enter base URL if needed.
- Enter API key for remote providers.
- Pick a discovered model with arrow keys.
That means both first-run paths stay obvious:
LM Studio local -> Base URL -> credential name -> discovered local model
DeepSeek official -> Base URL -> credential name -> Keychain API key -> discovered DeepSeek model
Inside MA:
/ show slash command suggestions
/model switch model/profile with arrow keys
/memory open the project memory console
Tab complete selected command
Enter run selected slash command
ESC ESC switch session
User-facing slash commands:
| Command | Purpose |
|---|---|
/model |
Open the model/profile picker |
/memory |
Manage named Memories, multi-memory mounts, multi-target intake, automatic policy, and rollback |
/help |
Show user-facing commands |
/clear |
Clear current conversation |
/exit |
Exit MA |
CLI commands:
ma # chat
ma chat --resume # resume latest session
ma chat --resume <id> # resume specific session
ma sessions # list sessions
ma profiles # list model profiles
ma profile use <profile> # set default profile
ma secrets list # list secure credentials
ma secrets view <id> # view masked key after system auth
ma secrets delete <id> # delete key after system auth
ma secrets repair <id> # repair macOS Keychain trusted access
ma init # interactive setup
ma versionMA separates credentials from model profiles.
Example model ids:
LMStudio-local/qwen/qwen3.6-27b
DeepSeek/deepseek-v4-flash
/model aggregates models from configured providers, prefixes them by credential/provider name, and remembers the last selected profile.
MA can run Agora as a provider-owned MCP stdio subprocess instead of asking users to manage a local HTTP server. The TUI reports real provider stages such as local-model loading, memory mounting, and generation.
When the active provider is Agora, users operate uniquely named, independently versioned Memories; MemoryPatch is the immutable version object. MA reports mounted only after a later Agora response returns the requested ordered Patch ids and an advanced PatchSet revision. Memory management stays in the host-side /memory control plane: MA neither injects facts into the prompt nor exposes MemoryPatch policy and management tools to the conversational model.
/memory can mount zero or more Memories per project or conversation and hot-swap them at the next request boundary without restarting the base model. One intake batch may mix a new Memory with increments to multiple existing Memories; the source is extracted once and each target reports completed/noop/review/conflict/failed independently. Automatic intake requires explicit targets and runs after 4 new user turns or about 2,000 pending tokens plus 60 seconds of idle time. Failed targets can be retried alone or explicitly abandoned without blocking input or adding transcript noise.
Context Usage remains independent from MemoryPatch state: the TUI continues to show used/trigger/window/source from agent.getContextUsage(). Internalization never clears context, and compaction never claims to internalize memory.
The MA portable release pins the exact Agora 0.2.0 Mach-O artifact. Agora npm user artifacts contain no .py, .pyc, .js, or source maps and require no login or device activation.
MA marks an npm/bundled runtime as verified only when its Developer ID signature,
published npm integrity, accepted notarization evidence, and platform manifest SHA
match src/provider/agora-runtime-lock.json; ad-hoc candidates remain development-only.
MA starts with built-in MCP servers:
exec: shell command execution with danger guardfs: file read/writefs-edit: structured file editsgrep: code/text searchweb: DuckDuckGo search and web fetch with curl fallback
Create .ma/skills/deploy.md:
---
name: deploy
description: Deploy this project
arguments:
- name: environment
description: Target environment
required: false
default: staging
---
Deploy this project to {{environment}}.
Run tests first, build, deploy, then verify.Use it:
/deploy environment=production
Skills appear in slash command suggestions unless they conflict with a built-in command.
Global config:
~/.my-agent/config.json
Project config:
./config.json
Project config overrides global config. AGENT.md files are loaded from the current directory upward, plus ~/.my-agent/AGENT.md.
MA can run shell commands and edit files. Use it in trusted workspaces.
Current safeguards:
- dangerous shell command confirmation
- macOS Keychain for remote API keys
- explicit
ma secrets view/deleteauthentication - session-local runtime secret loading for unattended agent work
Known alpha boundary: the current Keychain helper is good enough for local alpha use, but stricter process-level trust would require a signed helper/ACL design.
npm run dev
npm test
npm run build
npm run release:checkSee CHANGELOG.md for unreleased reliability work and ROADMAP.md for the public product direction.
- Read CONTRIBUTING.md before opening a pull request.
- Report vulnerabilities privately under SECURITY.md, not in a public issue.
- Discussions are enabled for questions, ideas, and model/runtime reports.
MA is released under the MIT License. You may use, modify, distribute, sublicense, and sell copies of MA, provided that the copyright and license notice are retained.