Skip to content

Latest commit

 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 

Repository files navigation

Axle

My take on a terminal coding agent.

Axle

Install

npm install -g @vm2/axle

Then run axle in any project directory.

Axle is an invite-gated alpha. Email contact@vihangamihiranga.com for an invite code, then run /login on first start to redeem it.

What is in it

  • A curated list of models with their OpenRouter equivalents.
  • Local file and shell tools with web search and fetch
  • Sessions you can resume, plus /undo and /redo over the edits a turn made
  • Support for custom subagents and skills loaded from your own .axle, .agents, or .claude directories
  • Image attachments, themes, and a configurable reasoning effort

Run / in the TUI for the full command list.

Permissions

Out of the box Axle has no permissions set: every local tool runs freely inside the project, and anything reaching outside it asks first.

To narrow that, write a permissions.json in any of the .axle, .agents or .claude directories. Global files are read first and project files last, so a project rule wins.

{
  "permission": {
    "*": "allow",

    "path": {
      "*": "allow",
      "*.env": "deny",
      "*.env.example": "allow",
      "*/.ssh/*": "deny",
      "~/notes/*": "ask"
    },

    "bash": {
      "*": "allow",
      "git push *": "ask",
      "curl *": "ask",
      "rm -rf *": "deny"
    },

    "external_directory": {
      "*": "ask",
      "~/.cargo/registry/*": "allow"
    },

    "read": { "*": "allow" },
    "write": { "*": "allow", "*.lock": "ask" },
    "edit": { "*": "allow", "package.json": "ask" },
    "list": { "*": "allow" },
    "glob": { "*": "allow" },
    "grep": { "*": "allow" },
    "shell": { "*": "allow", "*--force*": "ask" },
    "skill": { "*": "allow", "deploy": "ask" },
    "agent": { "*": "allow", "reviewer": "deny" }
  }
}

path applies to every file a tool touches, bash to each command in a chain, external_directory to anything outside the project root, and the rest to one tool each. * is greedy, ~ expands, and within a surface the last matching rule wins, so put catch-alls first. Surfaces are judged independently and the strictest answer stands.

Note

Alpha. Expect things to move and break. Please report bugs or feature requests via /issue.

About

My personal coding agent harness. Try it out: npm install -g @vm2/axle

Resources

Stars

1 star

Watchers

0 watching

Forks

Contributors