VibeProxy + Droid Workflow: Using Existing Subscriptions for AI Coding
Overview
I use this workflow every day for AI-assisted coding. Three tools make it work: Warp’s terminal (left sidebar for project management, file tree, and git status), VibeProxy to avoid extra API costs, and Factory AI’s Droid for coding tasks. You use subscriptions you already pay for (Claude, Codex) or OpenRouter, so you don’t pay twice for API access.
Prerequisites
You need:
- Warp terminal (app or clone from warp.dev): has a left sidebar for project management, file tree, and git status
- VibeProxy (custom setup from github.com/automazeio/vibeproxy): routes Droid requests through your existing subscriptions
- Factory AI Droid (sign up at factory.ai): the AI coding agent that does the actual work
- Existing subscription: either Claude Code, ChatGPT, or an OpenRouter API key
Workflow
The flow is simple:
- Warp left bar manages projects, shows file tree and git status at a glance
- Prompt the LLM via Droid’s interface
- Let Droid do the work: it handles code changes, file edits, and git commits
VibeProxy sits in the middle, routing Droid’s model requests to your existing subscription. You don’t pay extra for API usage because it uses the subscription you already have.
VibeProxy Setup
I use a custom setup that bypasses VibeProxy’s Swift wrapper to run the bundled cli-proxy-api-plus binary directly. This preserves OpenRouter compatibility and avoids config overwrites. VibeProxy 1.8.0+ adds support for multiple accounts with auto-failover, Claude/Gemini extended thinking, and GitHub Copilot integration.
Step 1: Start the proxy
Run the helper script (saved in my vibeproxy-setup project):
~/Documents/Edis-Vault/Projects/vibeproxy-setup/start-proxy.shThis starts the proxy on http://127.0.0.1:8317 with OpenRouter models preconfigured.
Step 2: Configure Droid
Add custom models to ~/.factory/settings.json pointing to the local proxy:
{
"custom_models": [
{
"model_display_name": "Claude Opus 4.7",
"model": "claude-opus-4.7",
"base_url": "http://localhost:8317/v1",
"api_key": "droid-local-key",
"provider": "generic-chat-completion-api"
}
]
}Step 3: Verify
Test the proxy with a curl command:
curl -s -X POST http://localhost:8317/v1/chat/completions \
-H "Authorization: Bearer droid-local-key" \
-H "Content-Type: application/json" \
-d '{"model":"claude-haiku-4.5","messages":[{"role":"user","content":"reply with exactly: PONG"}],"max_tokens":20}'You should get a response with “PONG” and cost data from OpenRouter.
Why This Works
Normally, Droid requires a separate API subscription on top of your existing Claude/Codex plan. That means paying twice for the same models. VibeProxy solves this. It authenticates with your existing subscription, then passes requests to Droid.
The Reddit post that inspired this setup puts it best: “You’re essentially paying twice to access the same AI models.” VibeProxy eliminates that. I can use my Claude Max plan with Droid without extra fees.
Tips
- Quit the VibeProxy menu-bar app before running the proxy script, as it fights for port 8317
- The proxy hot-reloads config changes, so you can add new OpenRouter models without restarting
- Check
~/.cli-proxy-api/logs/direct.logfor errors - Droid’s context and prompt engineering consistently produce better results with 80% fewer tokens than vanilla Claude Code
References
- VibeProxy: github.com/automazeio/vibeproxy
- Factory Droid: factory.ai
- OpenRouter: openrouter.ai
- Warp Terminal: warp.dev
- Reddit Context: Use Factory AI Droid with your Claude/ChatGPT subscription