Commit

dcce808

replying to @dtinth
Almost everything. Looking at what runs here: Must stay root (the core, not components): - sshd: it logs you in as dev - the gateway (caddy + oauth2-proxy as gateway): an edge hole must not land in the account with sudo, and dev's code must not read its secrets - the…
Agree. Please look at all the core and components. What are the common things it need to do? For example, I might want to set up a daemon that runs whenever this container runs. I would have to configure pitchfork myself, etc. So I am thinking of something more convention-based.…
Surveyed everything. The glue every piece repeats: 1. an enable flag 2. a daemon (user pitchfork), with readiness (port/cmd/http) and sometimes depends 3. a loopback run script reading env with defaults 4. a gateway route under /~env/<name>, prefix stripped or passed through 5.…
- I wonder if we can get rid of the preset and make it also a component. - component.env - how about toml? - run - I think this can link to a folder with pitchfork.toml so we can run pitchfork on it. - I don't like the *_ENABLED env. Maybe better to have it not run in the…
1. Presets as components: yes. opencode becomes a component that claims / . vanilla is simply "nothing claims /". PRIMARY_COMMAND becomes a tiny built-in component. One rule: at most one component may claim / . 2. TOML: yes, component.toml. 3. pitchfork.toml in the folder:…
Sounds good. It should support symlinking. agent-env-component.toml? I think we should also have some kind of support for startup script or hook which runs before we start user-level pitchfork. Then this would let me write script that provision. I would put it in a compose…
Good. agent-env-component.toml it is: distinctive, so a repo root can be a component by itself. Symlinks: work, with one catch I just tested. pitchfork names daemons after the link's target, so components/smb -> ~/src/my-repo shows up as my-repo/web. pitchfork.toml has a…
Agree. Also want an easy way to install a component, so maybe agent-env component install . which idempotently creates a symlink. Name is defined in toml and it refuses to replace a symlink if already installed but points to different folder unless --force? It should lint stuff…
Agree on all of it: - agent-env component install . reads the name from agent-env-component.toml and symlinks ~/.config/agent-env/components/<name>. It's a no-op if the link already points here, refuses if it points elsewhere unless --force. Plus uninstall <name> and list.…
Agree. The host is good. For mise tools, on reconcile, it would symlink the tool to conf.d right? e.g. conf.d/agent-env-<name>.toml. And also deletes the ones not listed?
Yes, symlink rather than copy (today it copies), so editing a component's mise.toml applies on the next mise install. Tested: mise reads a conf.d symlink pointing outside ~/.config with no trust prompt, [env] included. Deleting: the reconciler owns every…
Looks good. Why we need agent-env opencode in the first place? What is it for, like what are its use cases? No need to keep backwards compatibility tho. Btw just noting, before you start the implementation I want you to make a docs describing the component system. Then, have a…
Good question. Looking at them, there's not much case for it: - agent-env tui cds to the workspace, waits for the server and runs opencode --server .... But env.sh already sets OPENCODE_SERVER and its password in login shells, so plain opencode attaches to the same server.…
We could. Links into ~/.local/bin win on two points: - Instant: ~/.local/bin is already on PATH everywhere (login shells, ssh box cmd, daemons, open terminals). A new PATH entry only reaches shells and daemons started after install, and /etc/environment would need rewriting as…
How about ~/.agent-env/bin in PATH? By the way, for the sub-agent review, I want it to also flag the implementation details they did not need to know so the docs is user facing. Another question is what language would you use to implement these commands? Python?
~/.agent-env/bin: yes, that's the best of both. It's a fixed entry, so it goes on PATH once at boot (profile.d + /etc/environment) and reaches everything. Install drops links into it, so commands are live immediately and clashes are caught. Then why not put components there too,…
Last open branch before I write the doc: defaults. Today, with nothing set, you get the desktop, terminal and file manager, and opt in to opencode and docker. As components, I'd make the default AGENT_ENV_COMPONENTS=desktop,terminal,files. Setting the variable replaces that list outright, e.g. AGENT_ENV_COMPONENTS=opencode,terminal,files,smb for a box with no desktop. No +/- syntax: you read the line and know exactly what runs. The configurator writes the full list for you. Also: user components in ~/.agent-env/components/ always run when present, so they never need listing. OK?

commit dcce808