{"id":50148809,"url":"https://github.com/day50-dev/agent-cli","last_synced_at":"2026-06-10T00:01:19.278Z","repository":{"id":351427274,"uuid":"1210953719","full_name":"day50-dev/agent-cli","owner":"day50-dev","description":"a small and tidy agentic flow for people who are terminal first","archived":false,"fork":false,"pushed_at":"2026-06-05T06:35:27.000Z","size":157,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-05T07:28:02.725Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/day50-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.MIT","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-14T23:37:29.000Z","updated_at":"2026-06-05T06:35:30.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/day50-dev/agent-cli","commit_stats":null,"previous_names":["day50-dev/agent-cli"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/day50-dev/agent-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/day50-dev%2Fagent-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/day50-dev%2Fagent-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/day50-dev%2Fagent-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/day50-dev%2Fagent-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/day50-dev","download_url":"https://codeload.github.com/day50-dev/agent-cli/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/day50-dev%2Fagent-cli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34130642,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-09T02:00:06.510Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-05-24T07:02:56.075Z","updated_at":"2026-06-10T00:01:19.268Z","avatar_url":"https://github.com/day50-dev.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n\u003cimg width=\"750\" alt=\"logo_750\" src=\"https://github.com/user-attachments/assets/be17868c-417f-45b4-8804-9da8f812e1c3\" /\u003e\n\n\u003c/p\u003e\n\n**Stop wasting time on busted claws**\n\nOpenclaw is janky, insecure, doesn't get shit done, and costs too much skrilla. \n\nTurn to **MAX AC**: a single shot agent. No complex setups or servers. No weirdo config files. No sitting in memory or orchestrating through systemd. \n\n * It can run locally on average laptops.\n * Everything is done in Anthropic skills. Import them, export them, modify them.\n * Command permissions are categorized and symlinked. \n * Specify the skill you want for deteministic results, or don't. Up to you.\n\nMAX gets shit done and then gets out of the way. \n\nUse **MAX AC**, the coolest terminal agent.\n\nWatch it on a cheap $500 laptop using a local model, LFM 2.5:\n\nhttps://github.com/user-attachments/assets/28fb8ffc-6645-4162-9c88-8864def15ba1\n\nYou describe what you want. `ac` udoes the rest. Skill matching, tool selection, result verification. \n\nAt default verbosity, you just see the answer. Add `-v` or `-vv` for internals.\n\n## Easy start\n\n``shell\n$ uvx maxac serve\n```\n\nAnd\n\nThat\n\nIs\n\nAll.\n\nYou're done. Your agent is up and running. That's it.\n\n## Skills\n\nEvery successful task is saved as a **skill** — an [Anthropic-compatible](https://agentskills.io) `SKILL.md` + `plan.json` pair under your config directory:\n\n```\n~/.local/maxac/skills/\n  clone-repo/\n    SKILL.md      # YAML frontmatter + instructions (importable to other tools)\n    plan.json     # parameterized plan, params_map, success condition\n```\n\nThe LLM identifies variable arguments (URLs, repo names, paths, versions) and gives them semantic parameter names (e.g. `repository_url`, `branch_name`) — so the same skill works on new inputs without re-planning. Skill matching is also LLM-driven: the model decides whether a saved skill genuinely applies to your task, rejecting false matches.\n\n---\n\n## Install\n\n```bash\nuvx/pipx/uv tool maxac\n```\n\nThen point it at any OpenAI-compatible API and turn up the AC:\n\n```bash\nac -s model \"gemma4:9b\"\nac -s base_url \"http://localhost:11434/\"\n```\n\n---\n\n## Try it now\n\n```bash\n# Run a one-shot task\nac \"list all files in the current directory\"\n```\n\n`maxac` is the full name; `ac` is the short alias.\n\n---\n\n## What happens when you run a task\n\n1. **Defines success** — the LLM writes a concrete, directly verifiable success condition before touching anything (e.g. \"output contains filesystem mount points and their total/used/available space\" — not vague things like \"output contains information about disk usage\").\n2. **Matches skills** — the LLM checks saved skills against your task. It rejects generic matches (a bare `cat` skill won't fire when you asked about disk space — the LLM knows `df` is the right tool).\n3. **Plans** — the LLM picks the best tool for the job (`df` for disk space, `free` for memory, `git` for repos) — not limited to already-linked tools. Any tool on PATH is fair game.\n4. **Resolves tools** — needed tools are symlinked automatically (with your approval). If a tool isn't on PATH, the LLM suggests an alternative before falling back to system search.\n5. **Executes step-by-step** — each action is visible at `-v`; nothing runs silently.\n6. **Verifies** — the LLM checks tool output against the success condition and produces a human-readable answer (e.g. \"The CPU is AMD Ryzen 7 and the memory is 16GB\").\n7. **Learns** — the LLM names the skill, identifies variable arguments, and parameterizes the plan — all via LLM, not regex.\n\n---\n\n## Tool isolation\n\nInstead of reaching into your full system `PATH`, `ac` works with a minimal set of symlinked tools under its config directory:\n\n```\n~/.local/maxac/tools/\n  doc/bin/    whatis  apropos  man  pydoc\n  find/bin/   cat  head  tail  ls\n  vcs/bin/    git          ← symlinked on first use, after you say yes\n  build/bin/  npm  pip  …\n```\n\nWhen a task needs a new tool, the agent checks PATH first, then asks the LLM for an alternative if needed, then falls back to `whatis`/`apropos` as a last resort. It prompts you before symlinking:\n\n```\n  allow symlink: git → tools/vcs/bin/git  [y/N]\n```\n\nUse `-y` / `--yes` to pre-approve all symlinks for non-interactive runs:\n\n```bash\nac -y \"clone github.com/user/repo as my-repo\"\n```\n\n---\n\n### Skill commands\n\n```bash\nac --skills                   # list all saved skills\nac --skills clone-repo        # show detail: instructions, plan, params\nac -d clone-repo              # delete a bad skill so it re-learns from scratch\nac --skill name --task file   # explicitly run a skill with a task from a file\nac --import path/to/skill     # import a skill from a dir, .md, or .skill archive\nac --export skill-name        # export a skill to a .skill archive (zip)\n```\n\n---\n\n## Configuration\n\nConfig lives at `~/.local/maxac/config.json` (path varies by platform — see table below).\n\n### Set values\n\n```bash\nac -s model \"gpt-4o\"\nac -s base_url \"https://api.openai.com/v1\"\nac -s key \"sk-...\"\nac -s                          # show current values (key is masked)\n```\n\n`base_url` is auto-corrected — if it doesn't already end with `/v1` or `/v1beta`, `/v1` is appended:\n\n```bash\nac -s base_url \"https://integrate.api.nvidia.com\"\n# → stored as https://integrate.api.nvidia.com/v1\n```\n\n### List available models\n\nRun `-m` with no value to query the `/models` endpoint — useful for verifying your key and `base_url`:\n\n```bash\nac -m\n#   ✓ models available at https://api.openai.com/v1:\n#   · gpt-4o  (openai)\n#   · gpt-4o-mini  (openai)\n```\n\n### One-shot overrides\n\nOverride model, base URL, or key for a single run without changing saved config:\n\n```bash\nac -m \"gpt-4o-mini\" \"summarise this repo in 10 bullets\"\nac -b \"https://my-proxy.example.com/v1\" -k \"sk-...\" \"list all files\"\n```\n### Debug: see the raw API call\n\n```bash\nac --curlify \"say hi\"\n# prints the equivalent curl command before executing\n```\n\n---\n\n## Model Context Protocol (MCP)\n\nMAX AC supports [Anthropic's Model Context Protocol](https://modelcontextprotocol.io). You can connect to any MCP server to give the agent access to specialized tools (e.g. SQLite, Brave Search, Google Drive).\n\n### Configuration\n\nConfig lives at `~/.local/maxac/mcp_servers.json`. \n\nExample `mcp_servers.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"sqlite\": {\n      \"command\": \"uvx\",\n      \"args\": [\"mcp-server-sqlite\", \"--db-path\", \"/path/to/my/database.db\"]\n    },\n    \"brave-search\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@modelcontextprotocol/server-brave-search\"],\n      \"env\": {\n        \"BRAVE_API_KEY\": \"YOUR_API_KEY_HERE\"\n      }\n    }\n  }\n}\n```\n\n### Usage\n\nThe agent automatically connects to all configured MCP servers on startup. Tools from these servers are seamlessly integrated into the agent's planning phase.\n\n```bash\n# Use an override MCP config file for a single run\nac --mcp_file ./custom_servers.json \"search for the latest news on MCP\"\n```\n\n---\n\n### Config directory\n| Platform | Default path |\n|---|---|\n| Linux | `~/.local/maxac/` |\n| macOS (framework build) | `~/Library/Python/3.x/maxac/` |\n| macOS (non-framework) | `~/.local/maxac/` |\n| Override | `-c \u003cpath\u003e` / `--config-dir \u003cpath\u003e` |\n\n---\n\n## Quick reference\n\n| Command | What it does |\n|---|---|\n| `ac \"\u003ctask\u003e\"` | Run a one-shot task |\n| `ac` | Show status (tools, skills, config) |\n| `ac -s model \"gpt-4o\"` | Set default model |\n| `ac -s base_url \"…\"` | Set default API base URL |\n| `ac -s key \"…\"` | Set default API key |\n| `ac -s` | Show current config values |\n| `ac -m` | List models at current base URL |\n| `ac -m \"model\" \"\u003ctask\u003e\"` | Run task with a different model |\n| `ac -b \"url\" \"\u003ctask\u003e\"` | Run task with a different base URL |\n| `ac -k \"key\" \"\u003ctask\u003e\"` | Run task with a different API key |\n| `ac --skills` | List saved skills |\n| `ac --skills \u003cname\u003e` | Show skill detail |\n| `ac --skill \u003cname\u003e` | Explicitly run a specific skill |\n| `ac --task \u003cfile\u003e` | Read task description from a file |\n| `ac -d \u003cname\u003e` | Delete a skill |\n| `ac --import \u003cpath\u003e` | Import a skill from a dir, .md, or .skill archive |\n| `ac --export \u003cname\u003e` | Export a skill to a .skill archive (zip) |\n| `ac -v \"\u003ctask\u003e\"` | Show sections and steps (`-vv` for raw tool output) |\n| `ac -y \"\u003ctask\u003e\"` | Auto-approve all tool symlinks |\n| `ac -c \u003cpath\u003e \"\u003ctask\u003e\"` | Use a different config directory |\n| `ac --curlify \"\u003ctask\u003e\"` | Print the raw API call as curl |\n\n---\n\n## Contributing\n\nIf you've run a task and thought \"that should just work\" — open an issue with:\n- what you typed\n- what you expected\n- what actually happened\n\nPRs welcome.\n\n---\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fday50-dev%2Fagent-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fday50-dev%2Fagent-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fday50-dev%2Fagent-cli/lists"}