Skip to content

basemodo pull

Bring an App's latest code into a folder: a new one, or one that came from it.

Terminal window
basemodo pull [OPTIONS] <APP> [FOLDER]

Into a new folder (or one that holds nothing), it writes the code with each file's executable bit, and .basemodo/, which names the App and the Deploy it came from: basemodo deploy in the folder deploys that App only, on that Deploy. In a folder that came from the App, it brings in the Changes made since (from a chat, another folder), joined with the folder's own as git merges, and says who made each: where both changed the same lines it leaves git's conflict markers, which hold the next deploy back until they are resolved. What agents and tools obey that someone else changed is written only with --accept. An App linked to GitHub keeps its code there: clone it with git instead. Needs what deploying needs: the App's Owner or an Editor.

Arguments

  • APP (required): The App whose latest code to bring in: its name, as basemodo deploy named it.
  • FOLDER: The folder: a new one, one that holds nothing, or one that came from the App (pull or deploy wrote its .basemodo/), whose own changes are kept. Default: a folder named after the App, in the current one. From the MCP, a new folder inside the one the MCP runs in.
  • --accept: Also write the changes another Person made to what agents and tools obey (AGENTS.md, CLAUDE.md, .claude/, .cursor/, .mcp.json and the other agents' files, .vscode/, .devcontainer/, .envrc, .npmrc, .yarnrc.yml, .pnpmfile.cjs, .husky/, Makefile, justfile, ignore files, package.json's scripts). Without it, those files stay as they are (into a new folder, they are left out) and are listed in held. An agent passes it only once the person agrees, after telling them which files and who changed them.

Like every command, it also takes the global options --json and --api-url.

Examples

Go on working on an App started from a chat, in a folder of its name:

Terminal window
basemodo pull lunch-rota

In that folder later, bring in what changed since:

Terminal window
basemodo pull lunch-rota .

Output

With --json, it prints {"app", "deploy", "folder", "files"}, and in a folder that came from the App "changes", "written", "deleted", "conflicts", "kept", "held", "left_alone" when there are any.

From an agent

Basemodo's MCP serves it as the tool pull. It changes things, so an agent's client may ask you before it runs. Its arguments are the command's, named as JSON keys: app (text), folder (text), accept (flag). It answers what the command prints with --json.