An autonomous full-stack development agent powered by the Claude Agent SDK. Takes your project from idea to production with incremental progress tracking across multiple sessions.
Based on Anthropic's best practices for long-running agents.
- Node.js >= 18.0.0
- Claude Code Subscription or Anthropic API Key - Sign in with
monty loginor get a key at console.anthropic.com
# 1. Install Node.js (if not installed)
# Download from https://nodejs.org or use winget:
winget install OpenJS.NodeJS.LTS
# 2. Install Monty globally
npm install -g @dobeutechsolutions/monty-fullstack-agent
# 3. Authenticate (RECOMMENDED - interactive login)
monty login
# 3b. Or set API key manually (PowerShell - current session)
$env:ANTHROPIC_API_KEY="your-api-key-here"
# 3c. Or set API key permanently (PowerShell - persistent)
[Environment]::SetEnvironmentVariable("ANTHROPIC_API_KEY", "your-api-key-here", "User")
# 4. Verify installation
monty --help# 1. Install Node.js (if not installed)
# Using Homebrew (recommended):
brew install node
# Or download from https://nodejs.org
# 2. Install Monty globally
npm install -g @dobeutechsolutions/monty-fullstack-agent
# 3. Authenticate (RECOMMENDED - interactive login)
monty login
# 3b. Or set API key manually (current session)
export ANTHROPIC_API_KEY="your-api-key-here"
# 3c. Or set API key permanently (add to ~/.zshrc or ~/.bash_profile)
echo 'export ANTHROPIC_API_KEY="your-api-key-here"' >> ~/.zshrc
source ~/.zshrc
# 4. Verify installation
monty --help# 1. Install Node.js (if not installed)
# Ubuntu/Debian:
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs
# Fedora/RHEL:
sudo dnf install nodejs
# Arch Linux:
sudo pacman -S nodejs npm
# Or use nvm (all distros):
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
nvm install 20
nvm use 20
# 2. Install Monty globally
npm install -g @dobeutechsolutions/monty-fullstack-agent
# 3. Authenticate (RECOMMENDED - interactive login)
monty login
# 3b. Or set API key manually (current session)
export ANTHROPIC_API_KEY="your-api-key-here"
# 3c. Or set API key permanently (add to ~/.bashrc or ~/.zshrc)
echo 'export ANTHROPIC_API_KEY="your-api-key-here"' >> ~/.bashrc
source ~/.bashrc
# 4. Verify installation
monty --help# Works on all platforms - no installation needed
npx @dobeutechsolutions/monty-fullstack-agent --help
# Initialize a new project
npx @dobeutechsolutions/monty-fullstack-agent init --spec="Build a todo app with React and Supabase"
# Continue development
npx @dobeutechsolutions/monty-fullstack-agent code# Add to an existing project
npm install --save-dev @dobeutechsolutions/monty-fullstack-agent
# Add scripts to package.json:
# "scripts": {
# "agent:init": "monty init",
# "agent:code": "monty code"
# }# Yarn
yarn global add @dobeutechsolutions/monty-fullstack-agent
# pnpm
pnpm add -g @dobeutechsolutions/monty-fullstack-agent
# Bun
bun add -g @dobeutechsolutions/monty-fullstack-agent# Create a new directory
mkdir my-awesome-app && cd my-awesome-app
# Initialize with your idea
monty init --spec="Build a modern todo app with React, TypeScript, Tailwind CSS, and Supabase backend. Include user authentication, real-time updates, and dark mode."
# Continue development
monty code# Navigate to your existing project
cd your-existing-project
# Initialize Monty (it will detect your tech stack)
monty init --spec="Complete the authentication system and add user dashboard"
# The agent will analyze your codebase and create a feature list
# Continue with incremental development
monty code# Check project status
monty status
# Continue where you left off
monty code
# Add specific context for this session
monty code --context="Focus on fixing the login bug in auth.ts"| Command | Description |
|---|---|
monty |
Auto-detect mode (shows help if not initialized) |
monty init |
Initialize a new project with feature list |
monty code |
Continue incremental development |
monty status |
Show project progress and feature status |
monty setup |
Set up Monty in current directory |
monty --help |
Show detailed help |
| Command | Description |
|---|---|
monty login |
Sign in with Claude Code subscription or Anthropic API key |
monty logout |
Sign out and clear stored credentials |
monty whoami |
Show current authentication status |
| Option | Description |
|---|---|
--spec="..." |
Project specification for initialization |
--context="..." |
Additional context for coding session |
--help, -h |
Show help |
--version, -v |
Show version |
Monty uses a sophisticated two-agent system:
┌─────────────────┐ First Run ┌─────────────────┐
│ │ ───────────────── │ Initializer │
│ Your Idea │ │ Agent │
│ │ │ │
└─────────────────┘ └────────┬────────┘
│
│ Creates
▼
┌─────────────────┐
│ .agent/ │
│ - feature_list │
│ - progress.txt │
└────────┬────────┘
│
┌─────────────────┐ Subsequent ┌────────▼────────┐
│ Production │ ◄──────────────── │ Coding │
│ Ready App │ Runs │ Agent │
│ │ │ │
└─────────────────┘ └─────────────────┘
When you first run monty init:
- Analyzes your project specification
- Detects existing tech stack (if any)
- Generates comprehensive
feature_list.jsonwith ALL features marked aspasses: false - Creates
claude-progress.txtfor session bridging - Makes initial git commit
When you run monty code:
- Reads progress file and git logs to understand current state
- Runs health checks and validates environment
- Selects highest-priority failing feature
- Implements feature incrementally
- Tests using browser automation
- Updates feature status and commits changes
- Logs progress for the next session
Monty automatically detects and adapts to:
Frameworks: React, Next.js, Vue, Svelte, Angular, Vanilla JS Build Tools: Vite, Webpack, Rollup, Turbopack Testing: Vitest, Jest, Playwright, Cypress Backend: Supabase, Express, Fastify, Next.js API Databases: PostgreSQL, MySQL, MongoDB, SQLite Styling: Tailwind CSS, CSS Modules, Styled Components, SASS Package Managers: npm, yarn, pnpm, bun
your-project/
└── .agent/ # Monty's working directory
├── feature_list.json # Feature tracking (immutable structure)
├── claude-progress.txt # Session logs for context bridging
├── error-log.json # Error history for recovery
└── checkpoints.json # Recovery checkpoints
{
"project": {
"name": "My App",
"description": "A modern todo application",
"created_at": "2025-01-15T00:00:00Z",
"stack": ["react", "typescript", "tailwind", "supabase"]
},
"features": [
{
"id": "feat-001",
"category": "functional",
"priority": 1,
"description": "User can create new todo items",
"steps": [
"Navigate to main interface",
"Click 'Add Todo' button",
"Enter todo text",
"Verify todo appears in list"
],
"passes": false,
"last_tested": null,
"notes": ""
}
]
}- functional - Core application logic and features
- ui - User interface elements, styling, responsiveness
- integration - API calls, data flow, third-party services
- performance - Loading times, optimizations
- accessibility - Keyboard navigation, screen readers, ARIA
The framework enforces these rules to prevent common agent failures:
- Cannot delete features from the feature list
- Cannot modify test steps (steps are immutable after creation)
- Cannot modify descriptions after creation
- Must verify via browser before marking features as passing
- Must commit changes before ending a session
Based on Anthropic's documentation:
| Best Practice | Implementation |
|---|---|
| Incremental Progress | Work on ONE feature at a time |
| Clean State | Always leave codebase in committable state |
| Browser Verification | Test as a human user would |
| Progress Logging | Document everything for the next session |
| Git Discipline | Descriptive commits for every change |
| Problem | Solution |
|---|---|
| Agent declares victory too early | Feature list requires ALL features to pass |
| Leaves environment with bugs | Must verify via browser before marking done |
| Marks features done prematurely | Browser automation required for verification |
| Spends time figuring out setup | Automated project detection and init scripts |
| Loses context between sessions | claude-progress.txt + git logs |
For advanced customization, modify src/config/agent-config.ts:
export const agentConfig = {
paths: {
agentDir: '.agent',
featureList: '.agent/feature_list.json',
progressFile: '.agent/claude-progress.txt',
},
tools: {
initializer: ['Read', 'Write', 'Bash', 'Glob'],
coding: ['Read', 'Edit', 'Bash', 'Glob', 'Browser'],
},
permissionMode: 'acceptEdits',
session: {
maxRetries: 3,
autoCommit: true,
},
};# Clone the repository
git clone https://github.com/dobeutech/monty-ai-fullstackdev-coder.git
cd monty-ai-fullstackdev-coder
# Install dependencies
npm install
# Build
npm run build
# Run in development mode
npm run devmonty-fullstack-agent/
├── bin/
│ └── cli.js # CLI entry point
├── src/
│ ├── agents/
│ │ ├── initializer.ts # First-run setup agent
│ │ ├── coding.ts # Incremental progress agent
│ │ └── prompts/ # System prompts
│ ├── config/
│ │ ├── agent-config.ts # Shared configuration
│ │ └── mcp-config.ts # Browser automation settings
│ ├── utils/ # Utility modules
│ └── index.ts # Main entry point
├── templates/ # File templates
└── scripts/ # Init scripts
Monty supports multiple authentication methods:
If you are already authenticated with Claude Code, Monty will automatically detect and import your credentials.
monty login
# ✓ Found Claude Code credentials!
# ✓ Imported successfully# Sign in with Claude Code subscription (OAuth) or Anthropic API key
monty login
# Check your authentication status
monty whoami
# Sign out when needed
monty logoutThe interactive login will:
- First attempt to auto-detect Claude Code credentials
- If not found, offer OAuth login (opens browser) or manual API Key entry
- Validate your credentials
- Store them securely in
~/.monty/credentials.json
You can also authenticate using environment variables:
| Variable | Description | Required |
|---|---|---|
ANTHROPIC_API_KEY |
Anthropic API key | No (if using login) |
ANTHROPIC_SUBSCRIPTION_KEY |
Claude Code subscription key | No (if using login) |
FORCE_INIT |
Force initialization mode | No |
When multiple credential sources exist, the priority is:
ANTHROPIC_SUBSCRIPTION_KEYenvironment variableANTHROPIC_API_KEYenvironment variable- Subscription key from
~/.monty/credentials.json - API key from
~/.monty/credentials.json
You need to authenticate before using Monty. Choose one of these methods:
Option 1: Auto-detect (recommended) - If you have Claude Code CLI installed:
# First, authenticate with Claude Code
claude login
# Then let Monty auto-detect your credentials
monty loginOption 2: Manual API Key:
# Interactive login
monty login
# Select "API Key" method
# Paste your key from console.anthropic.com
# OR set environment variable
export ANTHROPIC_API_KEY="sk-ant-..."Option 3: Environment Variable (for automation/CI):
export ANTHROPIC_API_KEY="your-key-here"
monty init --spec="your project"Monty automatically refreshes expired tokens if you authenticated via Claude Code CLI.
If auto-refresh fails, re-authenticate:
monty logout
monty loginYour API key may be invalid or expired:
- For Claude Code subscription: Run
claude loginto refresh, thenmonty login - For API key: Get a new key from console.anthropic.com/settings/keys
- Check your key: Run
monty whoamito verify authentication status
Check your current authentication status:
monty whoamiThis command shows:
- Authentication method (Claude subscription or API key)
- Token expiration (if applicable)
- Key preview (first 8 and last 4 characters)
- Credential source (environment variable or file)
If authentication is working but agents fail:
- Verify network connectivity to api.anthropic.com
- Check that credentials file permissions are correct:
- Unix/Mac:
ls -la ~/.monty/credentials.json(should be-rw-------) - Windows: Only current user should have access
- Unix/Mac:
- Try setting API key directly:
export ANTHROPIC_API_KEY="your-key"
Run monty init first to initialize the project:
monty init --spec="Build a todo app with React"Ensure the CLI is executable:
# Unix/Mac
chmod +x $(which monty)
# Windows (run as Administrator if needed)
# No action usually required on Windows- Check authentication:
monty whoami - Verify Node.js version:
node --version(must be >= 18.0.0) - Check for error messages in the output
- Try running with explicit auth:
ANTHROPIC_API_KEY="your-key" monty code
Contributions are welcome! Please read our Contributing Guide for details.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Effective Harnesses for Long-Running Agents
- Building Effective Agents
- Demystifying Evals for AI Agents
- Claude Agent SDK
This project is licensed under the Creative Commons Attribution-NonCommercial 4.0 International License (CC BY-NC 4.0).
You are free to:
- Share and redistribute the material
- Adapt, remix, and build upon the material
Under these terms:
- Attribution - You must give appropriate credit to Dobeu Tech Solutions LLC
- NonCommercial - You may not use the material for commercial purposes
For commercial licensing:
- Email: jeremyw@dobeu.net
- Website: dobeu.net
- Terms of Service: dobeu.net/tos
- Privacy Policy: dobeu.net/privacy
See LICENSE for full details.
Copyright (c) 2025 Dobeu Tech Solutions LLC - All Rights Reserved
Made with Claude Agent SDK