The reviewer agent uses the GitHub voice to fetch the PR + diff, the Filesystem voice to read the affected files in context, and posts a structured review back to GitHub. Because posting comments is destructive, HITL-enabled runtimes will pause for an operator before anything reaches the GitHub API.
import { defineScore, AnthropicProvider } from '@tuttiai/core'
import { GitHubVoice } from '@tuttiai/github'
import { FilesystemVoice } from '@tuttiai/filesystem'
export default defineScore({
provider: new AnthropicProvider(),
agents: {
reviewer: {
name: 'reviewer',
model: 'claude-sonnet-4-6',
system_prompt:
'You review GitHub pull requests. Read the diff and the affected files, then post a structured review.',
voices: [new GitHubVoice(), new FilesystemVoice()],
permissions: ['network', 'filesystem'],
},
},
}) - 01 Scaffold a project:
npx tutti-ai init my-pr-reviewer - 02 Install voices:
npm i @tuttiai/github @tuttiai/filesystem - 03 Drop the score above into
tutti.score.ts, set the env vars in.env, and runtutti-ai run.
-
HITL on writes (destructive: true) -
permissions: ["network", "filesystem"]