Automated setup powered by AI. Install a KnoxCall Agent on your host and let Claude analyze your codebase to automatically discover APIs, detect secrets, and create routes.
Skip manual setup. Install a KnoxCall Agent on your host, then start a conversation. The AI Onboarding Agent analyzes your codebase through the installed agent, discovers API integrations, detects credentials, and creates all necessary KnoxCall resources through a conversational interface.
The onboarding agent is a cloud-only feature (KnoxCall SaaS); it is not available on self-hosted deployments. SSH-based onboarding (entering a host, port, username, and SSH password/key) has been retired — you now install a lightweight KnoxCall Agent on your host and start a conversation bound to that agent.
The agent will greet you and explain what it’s doing:
Agent: Hello! I'll scan your codebase to discover API integrations. I've found 3 repositories to analyze. Starting scan...Agent: Found 47 API calls in your code. Let me classify them...Agent: I discovered calls to: - Stripe API (15 endpoints) - Twilio API (8 endpoints) - SendGrid API (5 endpoints) Are these external APIs you want to proxy through KnoxCall?You: Yes, all of themAgent: Great! I also found credentials in your .env files: - STRIPE_SECRET_KEY - TWILIO_AUTH_TOKEN - SENDGRID_API_KEY Should I create secrets for these?You: Yes please
✅ Created collection: Payment APIs✅ Created secret: stripe_secret_key✅ Created route: Stripe Charges API✅ Created route: Stripe Customers API... (continues for all resources)✅ Created client: Production Server✅ Linked client to all routesDone! Created 28 routes, 3 secrets, 2 collections, and 1 client.
Agent: I found calls to api.internal-analytics.com Is this an external service or your own infrastructure?You: That's our own service, skip itAgent: Got it, I'll ignore api.internal-analytics.com
Handle ambiguity:
Agent: The endpoint "POST /payments" is called with different base URLs in different files: - https://api.stripe.com (prod) - https://api-sandbox.stripe.com (dev) Should I create separate routes or use environments?You: Use environmentsAgent: Perfect, I'll create one route with production and development environments
Provide context:
You: Why do you need my Stripe key?Agent: I detected 15 Stripe API calls in your code at: - /var/www/api/payment.php (lines 45, 67, 89) - /var/www/api/subscriptions.php (lines 23, 56) The STRIPE_SECRET_KEY from your .env file will be stored encrypted and injected when proxying these calls. You can choose not to import it if you prefer manual setup.
Start a new conversation against the same agent to re-scan the same host:
Use case: You've updated your code and want to discover new APIs without reinstalling anything.1. Open the agent on the Agents page (or the Onboarding page)2. Click "New Conversation"3. Select the same repositories4. Agent runs fresh analysis with updated code
Agent: I can create these collections: - Payment APIs (Stripe, PayPal) - Communication (Twilio, SendGrid) - Data Storage (AWS S3, Google Cloud Storage)You: Create separate collections for each serviceAgent: ✅ Will create 5 collections instead of 3 ORYou: Put everything in one collection called "Production APIs"Agent: ✅ All routes in single collection "Production APIs"
The agent can configure environments during creation:
Agent: I found these endpoint patterns: Production: https://api.stripe.com Sandbox: https://api-sandbox.stripe.com (in test files) Create environments for both?You: YesAgent: ✅ Creating routes with "production" and "sandbox" environments You'll need to configure sandbox credentials later
Solution:1. Confirm the KnoxCall Agent shows as "active" on the Agents page2. Verify the agent process is running on your host3. Confirm the host can reach KnoxCall outbound over HTTPS/WSS4. Re-run the 1-line install if the agent was removed or revoked
Problem: “Permission denied when reading files”
Solution:1. Ensure the OS user the agent runs as has read access to code directories2. Check: ls -la /var/www/yourapp3. May need to add the agent's user to the www-data group: sudo usermod -a -G www-data <agent-user>
Possible causes:1. Code uses indirect API calls (variables instead of strings)2. Selected wrong directory (no source code)3. Unsupported language/frameworkSolution:- Manually review files at: /var/www/yourapp/src- Look for API client initialization- Check if framework uses config files instead of inline URLs
Problem: “Too many false positives”
Agent detected internal URLs as external APIsSolution:- Use bulk domain classification- Mark internal domains as "skip"- Agent learns: skips similar patterns
Problem: “Secret values not detected”
Agent found .env files but no secretsPossible causes:1. Environment variables loaded at runtime (not in files)2. Secrets stored in external vault (AWS Secrets Manager, etc.)3. Config files in non-standard locationsSolution:- Manually create secrets after onboarding- Point agent to custom config directories
Solution:1. Check that the KnoxCall Agent is still active on the Agents page2. Refresh page (agent state persists)3. Send a message to wake agent4. Check /var/www/knoxcall/logs for errors
Problem: “Agent is stuck in a loop”
Agent keeps asking same questionSolution:1. Answer with specific details: ❌ "yes" ✅ "Yes, all Stripe endpoints are external"2. If unclear, ask agent: "What do you need from me?"3. Last resort: restart session (data preserved)
All onboarding endpoints live on the admin host (admin.knoxcall.com, or any knoxcall.com host), under the /admin prefix. They are authenticated by an admin session JWT plus the X-Tenant-ID header (owner/admin role) and are scoped to your tenant — they are not part of the /v1/* client API on api.knoxcall.com and do not accept an API key. They are also cloud-only: requests fail on self-hosted deployments.
Start a Conversation (create session):
POST /admin/agents/{agentId}/start-conversation{ "root": "/srv/app" // optional: filesystem root to scan}
Returns { "session_id": "<uuid>", "command_id": "<uuid>" }. This is the supported entry point — it creates an onboarding session bound to an installed KnoxCall Agent.
The legacy POST /admin/onboarding/sessions (passing host/port/username/auth_type) has been retired and now returns 410 Gone. Install a KnoxCall Agent and use POST /admin/agents/{agentId}/start-conversation instead.
Send Message:
POST /admin/onboarding/sessions/{id}/messages{ "content": "Yes, create all routes"}
Stream Events (SSE):
GET /admin/onboarding/sessions/{id}/stream?token={jwt}Events:- agent.message: Agent sent a message- agent.thinking: Agent is processing- agent.tool_call: Agent using a tool (read_file, etc.)- agent.tool_result: Tool execution completed- agent.action_needed: Agent needs user input- agent.error: Error occurred- agent.complete: Session complete