clean-postman-32056
08/01/2026, 8:46 PMlimited-student-10747
08/03/2026, 12:46 PMlimited-student-10747
08/03/2026, 12:47 PMhundreds-twilight-32833
08/03/2026, 3:22 PMclean-postman-32056
08/04/2026, 4:36 AMlimited-student-10747
08/04/2026, 5:01 AMcalm-artist-7206
08/04/2026, 12:46 PMgh cli, too
I feel like this allows me to not micromanage each repo, and helps the agent work with multiple repos naturally.clean-postman-32056
08/04/2026, 3:53 PMclean-postman-32056
08/04/2026, 3:53 PMdamp-australia-7460
08/04/2026, 8:06 PMapp_server and the original frontend, there was a full repo picker:
- A git router exposing paginated repository, branch and installation search
- A per-provider integrations tree (GitHub, GitLab, Bitbucket, Bitbucket DC, Azure DevOps)
- A Settings -> Git page where you pasted a PAT
- Provider/repo/branch dropdowns on the home screen
Self-hosted users pasted a token and picked a repo. No cloud account involved and it wasn't cloud-gated either: the git endpoints were registered for every deployment, without a flag hiding them from self-hosted users.
Then at some point it was deleted completely by cb9138ca ("chore: clear repository for Agent Canvas migration (#15397)").
---
Interestingly it still exists in the frontend too: GitService.searchGitRepositories and retrieveUserGitRepositories are right there, except both are now guarded with if (isInvalidProvider(provider) || !isCloudActive()) return EMPTY_REPOSITORY_PAGE; and otherwise delegate to the Cloud app-server. So the client half survived the migration and got gated to cloud use only. The server half that answers those calls isn't in any public OpenHands repo anymore.
I wasn't around when the migration happened, so I'd guess dropping the integrations layer wasn't really much of a choice. The agent-server is a runtime, so I imagine it was never meant to hold that kind of thing. Still, the end result feels off to me. Something that used to work if you self-hosted now only works if you're on the hosted product.
When I started using the new agent canvas I was also looking for a quick way to start on a project and that's exactly what the old picker gave you. On a local backend today there's nothing that provides that quick first experience.
On the "just tell the agent to clone it" argument: I don't think that's as straightforward as it sounds. It only works if you already know the agent can do it, if you already have an opinion about where your projects should be stored and if you have GitHub MCP and/or gh PAT set up already. That's a lot to assume for a new user. For most people the UI is how you find out what a tool is capable of. IMO if something only happens when you know to ask for it, it feels more like hidden functionality than a feature.calm-artist-7206
08/04/2026, 8:14 PMcalm-artist-7206
08/04/2026, 8:18 PMcalm-artist-7206
08/04/2026, 8:19 PMdamp-australia-7460
08/04/2026, 8:54 PMhow do I put this, to use the agent more and leave for hardcoded UI what needs to be hardcoded in the UI.I get what you mean.
Some things need to be. This one, idk. If it needs to be in UI, what if the UI would give a tip above the prompt box, for a new conversation without a workspace?Yeah, something like that could solve it too. I think it's mostly a discoverability issue actually, if you think about it. Users just need some way to learn that it is supported like that, in a "what you prompt is what you get" kinda fashion. Whether you communicate that through a dedicated UI component or a hint is up for debate.
Related, I wonder. If you don’t have an opinion where projects should be stored and you’re on the local backend, are you OK with the application placing it somewhere on disk?Hmm I haven't considered that question yet because I'm using docker and therefore I don't really care where it's placed by default 😅 What about the OS' standard app directory (like
~/.local/share/OpenHands for example on Linux)?