Factory Droid quickstart
Every droid gets its own identity, its own GitHub scopes, its own Jira reach, its own Slack channels. Every PR comment, every Jira update, every commit lands in the audit log. If a droid goes off the rails, one click stops every credential it had.
Requirements
- Factory Droid installed
- Node.js 18 or later
- An AgentValet account. You don’t need to create one up front, the CLI signs you in via your browser the first time you run it.
Set up
Run this in your project directory:
npx @agentvalet/registerYour browser opens to sign in (or sign up, it’s free). Once you authorise, the CLI generates an RS256 keypair, registers the agent, and writes the MCP entry. By default that’s ~/.factory/mcp.json (user-scoped, already global for Factory Droid). Pass --project for a project-scoped .factory/mcp.json instead, that mode also drops a governance droid spec into .factory/droids/agentvalet.yaml with matching /av-status and /av-register slash commands.
The private key is written to .agentvalet/agent.key in the project directory, with a .gitignore entry added automatically.
The agent is active straight away, with no approval step, but it starts deny-by-default with no scopes until you grant some in the dashboard .
Prefer to wire it up by hand?
{
"mcpServers": {
"agentvalet": {
"command": "npx",
"args": ["-y", "@agentvalet/register@latest", "mcp-server"],
"env": {
"AGENT_ID": "agt_...",
"OWNER_ID": "<your-owner-id>",
"PROXY_URL": "https://api.agentvalet.ai",
"AGENT_PRIVATE_KEY_PATH": "/path/to/project/.agentvalet/agent.key"
}
}
}
}Add this to .factory/mcp.json. You still need an agent and its private key, so run npx @agentvalet/register once and copy the values it prints. Without the env block the MCP server has no identity to sign with: the default registration doesn’t write the ~/.agentvalet/agent.json it would otherwise fall back to.
Confirm it loaded
If you set up with --project, run /av-status inside Droid to confirm AgentValet is connected. Otherwise, restart Factory Droid and check its MCP settings for agentvalet.
Make your first governed call
Ask the droid to call list_platforms. It should return the platforms approved for this agent, an empty list at first, and that’s fine. What matters is that the call succeeds: your key signs correctly, the proxy is reachable, and the agent record is active.
From there, grant scopes for a platform you’ve connected in the dashboard , droids can now call GitHub, Jira, Slack, and more, all scoped and logged.