{
  "meta": {
    "lastTouchedVersion": "2026.1.24-3",
    "lastTouchedAt": "2026-03-13T01:19:37.518Z"
  },
  "env": {
    "vars": {
      "OPENAI_API_KEY": "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"
    },
    "OPENROUTER_API_KEY": "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"
  },
  "wizard": {
    "lastRunAt": "2026-03-13T01:19:37.482Z",
    "lastRunVersion": "2026.1.24-3",
    "lastRunCommand": "doctor",
    "lastRunMode": "local"
  },
  "auth": {
    "profiles": {
      "anthropic:default": {
        "provider": "anthropic",
        "mode": "api_key"
      },
      "anthropic:claude-cli": {
        "provider": "anthropic",
        "mode": "oauth"
      }
    },
    "order": {
      "anthropic": [
        "anthropic:claude-cli",
        "anthropic:default"
      ]
    }
  },
  "models": {
    "mode": "merge",
    "providers": {
      "moonshot": {
        "baseUrl": "https://api.moonshot.ai/v1",
        "api": "openai-completions",
        "models": [
          {
            "id": "kimi-k2-0905-preview",
            "name": "Kimi K2 0905 Preview",
            "reasoning": false,
            "input": [
              "text"
            ],
            "cost": {
              "input": 0,
              "output": 0,
              "cacheRead": 0,
              "cacheWrite": 0
            },
            "contextWindow": 256000,
            "maxTokens": 8192
          },
          {
            "id": "kimi-k2.5",
            "name": "Kimi K2.5",
            "reasoning": false,
            "input": [
              "text"
            ],
            "cost": {
              "input": 0,
              "output": 0,
              "cacheRead": 0,
              "cacheWrite": 0
            },
            "contextWindow": 256000,
            "maxTokens": 8192
          }
        ]
      },
      "minimax": {
        "baseUrl": "https://api.minimax.io/v1",
        "api": "openai-completions",
        "models": [
          {
            "id": "MiniMax-M2.5",
            "name": "MiniMax M2.5",
            "api": "openai-completions",
            "reasoning": false,
            "input": [
              "text"
            ],
            "cost": {
              "input": 15,
              "output": 60,
              "cacheRead": 2,
              "cacheWrite": 10
            },
            "contextWindow": 200000,
            "maxTokens": 8192
          }
        ]
      }
    }
  },
  "agents": {
    "defaults": {
      "model": {
        "primary": "deepseek/deepseek-chat",
        "fallbacks": [
          "minimax/MiniMax-M2.5",
          "moonshot/kimi-k2.5"
        ]
      },
      "models": {
        "moonshot/kimi-k2-0905-preview": {
          "alias": "kimi"
        },
        "moonshot/kimi-k2.5": {
          "alias": "kimi"
        },
        "anthropic/claude-opus-4-5": {
          "alias": "opus"
        },
        "anthropic/claude-sonnet-4-20250514": {
          "alias": "default"
        },
        "deepseek/deepseek-chat": {
          "alias": "deepseek"
        },
        "deepseek/deepseek-reasoner": {
          "alias": "r1"
        },
        "minimax/MiniMax-M2.5": {
          "alias": "minimax"
        },
        "openrouter/moonshotai/kimi-k2-0905-preview": {
          "alias": "kimi"
        },
        "openrouter/moonshotai/kimi-k2.5": {
          "alias": "kimi"
        },
        "openrouter/deepseek/deepseek-chat-v3-0324": {
          "alias": "deepseek"
        },
        "openrouter/deepseek/deepseek-reasoner": {
          "alias": "r1"
        },
        "openrouter/minimax/minimax-m2.5": {
          "alias": "minimax"
        }
      },
      "workspace": "/home/ccuser/rateright-growth/rivet",
      "contextTokens": 200000,
      "memorySearch": {
        "sources": [
          "memory",
          "sessions"
        ],
        "experimental": {
          "sessionMemory": true
        },
        "query": {
          "hybrid": {
            "enabled": true,
            "vectorWeight": 0.7,
            "textWeight": 0.3,
            "candidateMultiplier": 4
          }
        },
        "cache": {
          "enabled": true,
          "maxEntries": 50000
        }
      },
      "contextPruning": {
        "mode": "cache-ttl",
        "ttl": "8h",
        "keepLastAssistants": 4,
        "softTrimRatio": 0.2,
        "hardClearRatio": 0.4,
        "softTrim": {
          "maxChars": 4000,
          "headChars": 1500,
          "tailChars": 1500
        }
      },
      "compaction": {
        "mode": "default"
      },
      "heartbeat": {
        "every": "30m",
        "model": "deepseek/deepseek-chat",
        "includeReasoning": false
      },
      "maxConcurrent": 4,
      "subagents": {
        "maxConcurrent": 20,
        "model": "anthropic/claude-opus-4-6"
      }
    }
  },
  "tools": {
    "web": {
      "search": {
        "provider": "perplexity",
        "apiKey": "BSAX4hhpkzkj2McQl4-wEqi7xzKhSwM",
        "perplexity": {
          "apiKey": "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",
          "model": "sonar-pro"
        }
      }
    },
    "media": {
      "audio": {
        "maxBytes": 20971520,
        "models": [
          {
            "provider": "openai",
            "model": "gpt-4o-mini-transcribe"
          }
        ]
      }
    }
  },
  "messages": {
    "ackReactionScope": "group-mentions",
    "tts": {
      "auto": "inbound",
      "provider": "elevenlabs",
      "elevenlabs": {
        "apiKey": "e62ff6bc79e5e876bb4c6f67a38625e0a60cf9ca51bac5bb0a88ee99fd352cc3",
        "voiceId": "21m00Tcm4TlvDq8ikWAM",
        "modelId": "eleven_multilingual_v2",
        "voiceSettings": {
          "stability": 0.5,
          "similarityBoost": 0.75,
          "speed": 1.4
        }
      }
    }
  },
  "commands": {
    "native": "auto",
    "nativeSkills": "auto",
    "restart": true
  },
  "session": {
    "reset": {
      "mode": "idle",
      "idleMinutes": 480
    }
  },
  "cron": {},
  "channels": {
    "whatsapp": {
      "dmPolicy": "disabled",
      "groupPolicy": "allowlist",
      "debounceMs": 0,
      "mediaMaxMb": 50
    },
    "telegram": {
      "enabled": true,
      "dmPolicy": "pairing",
      "botToken": "8294933660:AAGkWKC9tI032HGim3YnkomZyMXFTcRAuzE",
      "groups": {
        "-1003505625266": {
          "requireMention": false,
          "enabled": true,
          "allowFrom": [
            7377499346
          ]
        }
      },
      "groupPolicy": "allowlist"
    },
    "slack": {
      "mode": "socket",
      "webhookPath": "/slack/events",
      "enabled": true,
      "userTokenReadOnly": true,
      "groupPolicy": "allowlist"
    }
  },
  "gateway": {
    "mode": "local",
    "auth": {
      "token": "rivet-api-2026"
    },
    "http": {
      "endpoints": {
        "chatCompletions": {
          "enabled": true
        }
      }
    }
  },
  "plugins": {
    "allow": [
      "whatsapp",
      "slack",
      "telegram",
      "voice-call"
    ],
    "entries": {
      "whatsapp": {
        "enabled": true
      },
      "slack": {
        "enabled": true
      },
      "telegram": {
        "enabled": true
      },
      "voice-call": {
        "enabled": true,
        "config": {
          "provider": "twilio",
          "fromNumber": "+61238205443",
          "toNumber": "+61426246472",
          "twilio": {
            "accountSid": "AC754dd1caab85d4b6eef942ce6e515594",
            "authToken": "a9477c47f2e1c321739da9ac37d8595d"
          },
          "serve": {
            "port": 3334,
            "path": "/voice/webhook"
          },
          "outbound": {
            "defaultMode": "conversation"
          },
          "inboundPolicy": "allowlist",
          "allowFrom": [
            "+61426246472",
            "+61432780882"
          ],
          "inboundGreeting": "Hey, this is Rivet — the AI that runs operations for RateRight. What can I help you with?",
          "tts": {
            "provider": "elevenlabs",
            "elevenlabs": {
              "apiKey": "e62ff6bc79e5e876bb4c6f67a38625e0a60cf9ca51bac5bb0a88ee99fd352cc3",
              "voiceId": "IKne3meq5aSn9XLyUdCD",
              "modelId": "eleven_turbo_v2_5",
              "voiceSettings": {
                "speed": 1.2,
                "stability": 0.75,
                "similarityBoost": 0.75
              }
            }
          },
          "responseSystemPrompt": "You are Rivet. The COO system for RateRight. Not an assistant — the operations layer.\n\nABOUT YOU:\n- You run the machine. Michael runs the business.\n- Your job: Make every day a good day for Michael.\n- Mission: Workers keep as much money as possible. Contractors get value. Fee stays low.\n\nHOW YOU TALK:\n- Keep it SHORT. 1-3 sentences unless he asks for detail.\n- Direct. No bullshit. Australian English.\n- Actionable — what needs doing, not what's interesting.\n- Honest — bad news early, no sugar coating.\n\nHOW YOU THINK:\n- Be resourceful before asking. Try to figure it out.\n- Have opinions. Push back when something's a bad idea.\n- Think ahead. See problems, flag them. See opportunities, surface them.\n- Ask the questions Michael should be asking. Challenge assumptions.\n\nWHAT YOU KNOW:\n- RateRight: $50 flat fee per hire. Workers pay nothing. Construction marketplace in Australia.\n- Michael: Irish, 30 years construction (steelfixer), building RateRight while working 12-hour site days.\n- Schedule: 4:15am gym, 5:30am-6pm site, 6:30-11pm coding/RateRight.\n- Current status: Platform 85% done, not launched. 231 leads in Growth Engine, 91% untouched.\n- Blockers: Stripe webhook secret, Supabase bucket, .next ownership, team sacked until Growth Engine works.\n\nHARD RULES:\n- Never send external comms without explicit 'yes'.\n- Don't spam. Only ping for stuff that needs attention.\n- Alert immediately for: revenue at risk, system down, security incident.\n- Private things stay private.\n\nON THIS CALL:\n- You're talking to Michael on his commute (morning 6:30am or evening 5:30pm).\n- Morning: Site brief first, then business, then ONE hard question.\n- Evening: Business debrief, accountability, then ONE hard question.\n- Ask naturally. Follow up if he deflects. Remember what he says for next call.",
          "maxDurationSeconds": 600,
          "streaming": {
            "enabled": true,
            "streamPath": "/voice/stream"
          },
          "publicUrl": "https://rivet.rateright.com.au/voice/webhook",
          "maxConcurrentCalls": 5
        }
      }
    }
  }
}
