On your own computer
Run tasks in the Foxl desktop app with your own CLI login and GitHub credential, use worktrees and local review, or add a machine of your own
This page covers local execution in the Foxl desktop app. The standalone website at code.foxl.ai does not connect to your computer and does not offer This computer. It works without the Foxl app installed or running.
Remote or This computer
Foxl Code in the Foxl desktop app, on app.foxl.ai and in the iOS app works the way code.foxl.ai does by default: chat runs on the Foxl Code service and uses your Foxl credits, and tasks run on Remote or a machine you registered. To use this computer instead, open Settings > Code > Coding agent and set Where Foxl Code runs to This computer. Chat then runs in the Foxl desktop app on the model you chose in Settings > Model & provider, and This computer is offered as a machine. The choice is stored per device, and Remote and This computer each remember their own model, so using Remote does not replace the model This computer runs on your own provider. A device that opened Foxl Code on Remote with v0.8.7 lost This computer's model then: pick it once more and it is kept from then on. A device that already used Foxl Code with your own model provider moves to Remote too, and the Code page tells you so once, with a button that opens this setting. Tasks already running on this computer keep running either way, and are listed while This computer is selected.
In the Foxl desktop app, with Where Foxl Code runs set to This computer, a task can run on your machine: the clone, the coding CLI, the commit, the push and the pull request all happen there, using the CLI you are already signed into and your own GitHub credential. The local task is not dispatched to Foxl's cloud.
Off until you turn it on, and turning it on has to come from the machine itself - never from the web app or your phone - because it decides where your code runs.
Turning it on
In the Foxl app on the machine you want the work to happen on, first choose This computer under Where Foxl Code runs in Settings > Code > Coding agent (Remote is the default, on every device), then turn it on in Settings > Code > This computer. The answer is stored on that machine, so it survives a restart, an app update and a reboot.
If you run the desktop server yourself, FOXL_CODE_LOCAL_AGENT=1 in its environment turns it
on for that run and takes precedence over the stored answer.
The same pane is where the rest of it is configured:
- the clone folder - where repositories are checked out (see below);
- the folder a terminal starts in when no repository is selected;
- whether a coding agent asks first before it edits files and runs commands.
Which assistant runs it
Any of the six: Claude Code, Codex, Kiro, Cursor, Hermes, OpenCode. Each is launched the way that vendor's CLI actually wants, and a CLI you have not signed into says so in its own words rather than failing as "the task failed" - so a missing login reads as a missing login.
The choice comes from your account default, which you can change in the Tasks header or under Coding agents.
A pane on this computer starts the same program which claude names in your terminal, even
when a wrapper sits beside the original, and leaves your PATH untouched when the two already
agree. A Codex or Cursor pane opened in a subfolder of a repository or worktree does not stop
at Codex's "Trust this folder?" question: Foxl trusts the repository root, which is the folder
Codex asks about.
Plan first is not available here: it works for Claude Code tasks on Remote only, and the composer's + menu says so while new tasks run on one of your own machines.
Where your repositories go
A terminal's repo is cloned to ~/workspaces/<owner>/<name> (the clone folder, which you can
change), so two owners of the same repository name never collide.
If that folder already exists it is used as it is. No fetch, no pull, no stash, no checkout - it may be your live working copy with uncommitted work in it, and Foxl will not raise a conflict in a tree you were in the middle of.
A task started from a prompt runs in its own copy of the repository under ~/.foxl/code-tasks.
That copy is deleted once the task's work is on GitHub. It is kept when the push fails or it
holds anything GitHub does not have: uncommitted or new files, unpushed commits, a stash,
another worktree or a submodule (files the repository ignores, such as .env, do not count).
Copies older than three days that hold nothing GitHub lacks are removed when Foxl starts.
Worktrees, checkouts and local review
In the Foxl desktop app, with Where Foxl Code runs set to This computer, the Runtimes menu (the ... button) and a cloud task's menu add three things that work on this computer. On the default, Remote, none of the three is shown:
- New terminal in a worktree makes a separate copy of the repository picked in the header,
as a git worktree, and opens a terminal in it, so two agents on one repository do not edit
the same files and your own checkout is left as it is. The branch button in that terminal's
header shows its branch and folder, opens the folder, and removes the worktree. Removing asks
first only when the worktree has uncommitted changes, and is followed by Undo, which for
a few seconds puts the worktree back and reopens its terminal. Commits that were on no branch
come back with it, and stay in the repository under
refs/foxl/removed-worktrees/for 7 days. - Check out locally, in a cloud task's Task actions menu, fetches the task's branch into a new worktree on this computer and opens a terminal there, so you can try or finish the change yourself.
- Review changes... has a reviewer read a checkout on this computer - your uncommitted changes, your branch against a base branch, or one commit - and list what to fix, from P0 (must fix) to P3 (minor), with the file and line of each. It runs on the model you use in Foxl Agent and changes nothing in the folder.
Seeing what happened
Tasks that ran on this machine appear in the Foxl Code Tasks list under On this computer, with the assistant that ran them, the goal, the repository and how long ago. Each row opens the task's own page - the live terminal you can type into, the status, the branch, a Stop button, and the pull request link in its header once there is one - and it opens while the task is still running, since that page is the only place the agent's output exists.
The group appears in the desktop app and its app.foxl.ai companion when that computer is reachable and the device you are looking from has Where Foxl Code runs set to This computer. It never appears on code.foxl.ai.
The assistant may open the pull request itself, and that is fine. Most of these CLIs do their own git even when asked not to: several commit, push, open a pull request and then put the branch back the way they found it. Foxl recognises its own work by commit, adopts the pull request that already exists rather than opening a second one beside it, and says which of the two of you opened it.
Remote, this computer, or a box of your own
The machine segment of the Tasks and Runtimes header (+ | Remote | Claude Code) is where a
task runs:
- Remote - the managed cloud machine Foxl runs your work on. Model usage and compute are charged to your Foxl credits. It is the default and is not removable. It used to be called Foxl Cloud.
- This computer - your Foxl desktop, once you have chosen This computer under Where Foxl Code runs and turned it on above. This option is unavailable on code.foxl.ai.
- A machine you add in Settings > Code > Machines: either Launch on AWS (pick a Light, Balanced or Power size and a region; Foxl shows an estimate with a link to AWS's own calculator and prints the commands to run where your AWS CLI is set up) or an SSH box you already have. It uses that box's CPU, disk and network - your bill, your account. Foxl holds no credential for your AWS account, so removing a machine from Foxl does not stop the instance. Model calls for a managed Code task on that machine still go through Foxl Relay and consume credits. This differs from fully local This computer execution. From machine agent 0.3.2, a task there pushes through Foxl like a Remote task: unless it runs in a terminal you opened yourself, it cannot push to the default branch or a tag, and pushes its own branch for you to review instead (see GitHub). Re-run the installer on a machine whose row says an update is available; until then it pushes directly, as before.
Picking a machine sets your account default. A repository can also be pinned to a machine from the same menu, and the pin wins for that repository: Foxl resolves the machine as repo pin, then account default, then Remote. This computer cannot be pinned to a repository. A machine that has stopped checking in is reported as unreachable and skipped in that chain rather than dispatched to. On code.foxl.ai, an older saved This computer default is ignored and Remote is used; your desktop app preference is preserved.
Connecting a machine. The install command in Settings > Code > Machines does not
contain the machine's secret. The secret is shown once, beside the command with its own
Copy button, and the installer asks for it when it starts and hides it as you paste it, so
it stays out of your shell history and the list of running commands. For an unattended
install, --secret-file (and --tunnel-token-file for your own Cloudflare named tunnel)
reads the value from a file only you can read (chmod 600); a secret or tunnel token typed
on the command line is refused. Launch on AWS deploys only the template Foxl publishes,
after checking its fingerprint, and stops if it cannot check it.
On a machine you connect, tasks run under an account of their own (foxl-task), separate
from the Foxl agent that holds the secret: code in a repository a task works on cannot read
the secret, change the installed agent or reach the cloud instance's metadata service, and
anything a task starts is stopped when its coding agent exits (or, if it detached itself,
once no other task is running). A machine gets this when its agent is installed from
v0.7.33 on. On a server where you ran the install command yourself, run it again (use
Rotate secret first if you no longer have the secret); a machine Foxl Code launched on
AWS gets it when you launch it again, because re-running the Launch command on an existing
machine does not reinstall its agent.
What still runs in the cloud
Remote tasks use managed Code credits even when opened from the desktop app, and so does Foxl Code chat on a device left on the default, Remote. Choosing This computer under Where Foxl Code runs is what keeps Code chat and coding execution on your own provider and local CLI login; changing the app window alone does not change billing.
Turning this on does not move anything that was already running. Existing tasks keep running in Foxl's cloud exactly as before, and the autonomous loop and scheduled tasks are unaffected.
The orchestrator you talk to in Foxl Code is what starts a local task, and it tells you which
machine the work is on. On your computer it can also read the repository it is planning about -
CI status, a failing build, an issue - using the credential you already have: gh auth login,
your git credential helper, or FOXL_CODE_GITHUB_TOKEN. Reads stay confined to the repository
you have selected, and if no credential exists the refusal says so.