Open Account settings
Go to Settings → Account. Select the expand button next to Log in to reveal the Downcity federation URL.
CUSTOM FEDERATION
01 · Local server
Copy the prompt into Codex. The agent uses downcity-local-proxy to create ./downcity/local-proxy.
cd ./downcity/local-proxypnpm installpnpm start --codex --claude-codeUse --login for first-time OAuth, for example pnpm start --codex --login01.2 · How it works
A provider maps a public model ID to an upstream model.
Vibecape calls city.ai.listModels() for the model catalog.
Federation routes the request to the matching upstream.
import { AIService, Federation } from "@downcity/city";
// provider.model(...) maps a public model id to your upstream model.
const models = [
provider.model({
id: "team-codex",
name: "Team Codex",
meta: { upstream_model: "gpt-5-codex" },
}),
];
const federation = new Federation({ db });
federation.use(new AIService().use(models));
// Vibecape now discovers "team-codex" through city.ai.listModels().02 · Connect and use in Vibecape
Go to Settings → Account. Select the expand button next to Log in to reveal the Downcity federation URL.
Enter the Federation URL. Test it with the connection button, then save with the check button. Clear the field to return to the official Federation.
Select Log in and choose a method offered by the Federation. Vibecape fetches the models available to that account after sign-in.
Open Settings → AI Model and choose a text or image model. If the Federation changed recently, reload the catalog first.
Troubleshooting
Return to Account, expand the URL, and run the connection test.
A login from the previous Federation is not reused after the URL changes.
Use Reload in the upper-right corner of AI Model.