npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

attocode

v0.2.6

Published

Production AI coding agent for your terminal - multi-provider support, context management, MCP integration

Readme

Attocode

A production-ready AI coding agent for your terminal.

Features

  • Multi-provider support - Anthropic, OpenRouter, OpenAI
  • Memory system - Remembers context across sessions
  • Planning & Reflection - Breaks down complex tasks
  • File change tracking - Full undo capability
  • Context compaction - Never runs out of context in long sessions
  • Session persistence - Resume where you left off
  • Sandbox execution - Safe command execution
  • MCP integration - Connect external tools

Quick Start

1. Install

From npm (recommended):

npm install -g attocode

Or build from source:

git clone https://github.com/eren23/attocode.git
cd attocode
npm install
npm run build
npm link

Now attocode is available everywhere in your terminal.

2. Set up your API key

# Option A: Anthropic (recommended)
export ANTHROPIC_API_KEY="sk-ant-..."

# Option B: OpenRouter (100+ models)
export OPENROUTER_API_KEY="sk-or-..."

# Option C: OpenAI
export OPENAI_API_KEY="sk-..."

Add to your ~/.bashrc or ~/.zshrc to persist.

3. Run the setup wizard

attocode init

This creates your config at ~/.config/attocode/config.json.

4. Start coding

attocode

Usage

Interactive mode (default)

attocode

Single task

attocode "List all TypeScript files and explain the project structure"

With specific model

attocode -m anthropic/claude-opus-4 "Review this code for security issues"

Commands

Once in the REPL:

| Command | Description | |---------|-------------| | /help | Show all commands | | /status | Show session metrics | | /checkpoint | Save current state | | /restore | Restore a checkpoint | | /undo | Undo last file change | | /history | Show file change history | | /compact | Compact context (for long sessions) | | /save | Save session | | /load | Load a previous session | | /exit | Exit attocode |

Skills & Agents

Extend attocode with custom skills and agents:

# Initialize project directory
/init

# Create a custom skill
/skills new code-review

# Create a custom agent
/agents new domain-expert

# List available skills/agents
/skills
/agents

# Spawn an agent
/spawn researcher "Find all API endpoints"

Directory structure:

.attocode/              # Project-level
├── skills/             # Custom skills
└── agents/             # Custom agents

~/.attocode/            # User-level (shared across projects)
├── skills/
└── agents/

See docs/skills-and-agents-guide.md for the complete guide.

MCP Servers

Connect external tools via the Model Context Protocol.

Configuration Files

MCP servers are configured in JSON files. Attocode loads configs in order (later overrides earlier):

| Location | Scope | Priority | |----------|-------|----------| | ~/.config/attocode/mcp.json | User-level (all projects) | Lower | | .mcp.json | Project-level (this project) | Higher |

Setup

1. Create a config file:

# User-level (shared across all projects)
mkdir -p ~/.config/attocode
touch ~/.config/attocode/mcp.json

# Or project-level (this project only)
touch .mcp.json

2. Add server configurations:

{
  "servers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@anthropic/mcp-server-filesystem", "/path/to/allowed/dir"]
    },
    "github": {
      "command": "npx",
      "args": ["-y", "@anthropic/mcp-server-github"],
      "env": {
        "GITHUB_TOKEN": "${GITHUB_TOKEN}"
      }
    },
    "sqlite": {
      "command": "npx",
      "args": ["-y", "@anthropic/mcp-server-sqlite", "~/database.db"]
    }
  }
}

3. Verify with commands:

/mcp              # List connected servers
/mcp tools        # List available MCP tools
/mcp search <q>   # Search and load tools

Environment Variables

Use ${VAR_NAME} syntax to reference environment variables in configs:

{
  "servers": {
    "postgres": {
      "command": "npx",
      "args": ["-y", "@anthropic/mcp-server-postgres"],
      "env": {
        "DATABASE_URL": "${DATABASE_URL}"
      }
    }
  }
}

Popular MCP Servers

| Server | Package | Description | |--------|---------|-------------| | Filesystem | @anthropic/mcp-server-filesystem | Read/write files in allowed directories | | GitHub | @anthropic/mcp-server-github | GitHub API integration | | SQLite | @anthropic/mcp-server-sqlite | Query SQLite databases | | Postgres | @anthropic/mcp-server-postgres | Query PostgreSQL databases | | Brave Search | @anthropic/mcp-server-brave-search | Web search via Brave | | Puppeteer | @anthropic/mcp-server-puppeteer | Browser automation |

Find more at MCP Servers Directory.

Configuration

Config file: ~/.config/attocode/config.json

{
  "providers": {
    "default": "openrouter"
  },
  "model": "anthropic/claude-sonnet-4",
  "maxIterations": 50,
  "timeout": 300000,
  "memory": { "enabled": true },
  "planning": { "enabled": true },
  "sandbox": { "enabled": true },
  "resilience": {
    "incompleteActionAutoLoop": true,
    "maxIncompleteAutoLoops": 2,
    "autoLoopPromptStyle": "strict",
    "taskLeaseStaleMs": 300000
  },
  "hooks": {
    "enabled": true,
    "shell": {
      "enabled": false,
      "defaultTimeoutMs": 5000,
      "envAllowlist": ["SLACK_WEBHOOK_URL"],
      "commands": [
        {
          "id": "notify-on-complete",
          "event": "run.after",
          "command": "node",
          "args": ["./scripts/hook-notify.js"],
          "timeoutMs": 3000
        }
      ]
    }
  }
}

Behavior Tuning (Incomplete Recovery)

These settings control what happens when the model replies with "I'll do X" but has not executed the action yet:

  • resilience.incompleteActionAutoLoop: Automatically retry incomplete runs in TUI.
  • resilience.maxIncompleteAutoLoops: Maximum retry runs before terminal [INCOMPLETE].
  • resilience.autoLoopPromptStyle: Guidance style for retries (strict or concise).
  • resilience.taskLeaseStaleMs: Requeue stale in_progress tasks to pending at run boundaries.

For swarm runs, resilience.dispatchLeaseStaleMs in swarm config controls stale dispatched task recovery back to ready.

Branch Change Highlights

  • Added bounded incomplete-action recovery (future_intent / incomplete_action) in TUI.
  • Added run-boundary stale task lease recovery in core task manager.
  • Added stale dispatched-task recovery in swarm queue/orchestrator.
  • Added lifecycle shell-hook coverage for completion/recovery/run phases.

Lifecycle Hooks (Trigger External Automations)

You can trigger scripts on lifecycle events (for notifications, logging, CI checks, policy alerts).

Common lifecycle events:

  • run.before, run.after
  • iteration.before, iteration.after
  • completion.before, completion.after
  • recovery.before, recovery.after
  • llm.before, llm.after
  • tool.before, tool.after

Shell hooks receive JSON on stdin:

{
  "event": "run.after",
  "payload": { "...": "event-specific data" }
}

File Locations (XDG compliant)

| Purpose | Location | |---------|----------| | Config | ~/.config/attocode/config.json | | Sessions DB | ~/.local/share/attocode/sessions.db | | History | ~/.local/state/attocode/history | | Cache | ~/.cache/attocode/ |

CLI Options

attocode [COMMAND] [OPTIONS] [TASK]

Commands:
  init                    Interactive setup wizard

Options:
  -h, --help              Show help
  -v, --version           Show version
  -m, --model MODEL       Model to use (e.g., anthropic/claude-sonnet-4)
  -p, --permission MODE   Permission mode: strict, interactive, auto-safe, yolo
  -i, --max-iterations N  Max agent iterations (default: 50)
  -t, --task TASK         Run single task non-interactively
  --tui                   Force TUI mode
  --legacy                Force legacy readline mode
  --trace                 Enable trace capture to .traces/
  --debug                 Enable debug logging
  --swarm [CONFIG]        Enable swarm mode (optional config path)
  --swarm-resume ID       Resume a previous swarm session
  --paid-only             Use only paid models in swarm auto-detection
  --theme THEME           UI theme: dark, light, auto
  --yolo                  Shorthand for --permission yolo

Tracing & Performance Analysis

Attocode includes comprehensive tracing capabilities for understanding agent behavior, debugging issues, and optimizing performance.

Quick Start

# Enable tracing when starting attocode
attocode --trace

# View trace summary after running commands
/trace

# Analyze efficiency issues
/trace --analyze

Trace Commands

| Command | Description | |---------|-------------| | /trace | Show current session trace summary | | /trace --analyze | Run efficiency analysis on trace | | /trace issues | List detected inefficiencies | | /trace fixes | List pending improvements | | /trace export [file] | Export trace JSON for LLM analysis |

Trace Viewer CLI

For detailed offline analysis, use the trace-viewer tool:

# Navigate to the trace viewer
cd tools/trace-viewer

# Build (first time)
npm install && npm run build

# View trace summary
npx tsx bin/trace-viewer.ts .traces/

# Timeline view
npx tsx bin/trace-viewer.ts .traces/ --view timeline

# Token flow analysis
npx tsx bin/trace-viewer.ts .traces/ --view tokens

# Generate HTML report
npx tsx bin/trace-viewer.ts .traces/ --output html

# Compare two sessions
npx tsx bin/trace-viewer.ts compare <baseline.jsonl> <comparison.jsonl>

See docs/tracing-guide.md for the complete tracing documentation.

Architecture

Attocode follows a modular architecture:

┌─────────────────────────────────────────────────────┐
│                    Entry Point                       │
│                 src/main.ts (CLI + TUI)              │
└─────────────────────────────────────────────────────┘
                          │
                          ▼
┌─────────────────────────────────────────────────────┐
│                  ProductionAgent                     │
│  ┌─────────────┐ ┌─────────────┐ ┌───────────────┐  │
│  │   Hooks     │ │   Memory    │ │   Planning    │  │
│  └─────────────┘ └─────────────┘ └───────────────┘  │
│  ┌─────────────┐ ┌─────────────┐ ┌───────────────┐  │
│  │   Safety    │ │  Economics  │ │Context Engine │  │
│  └─────────────┘ └─────────────┘ └───────────────┘  │
└─────────────────────────────────────────────────────┘
        │                  │                  │
        ▼                  ▼                  ▼
┌──────────────┐   ┌──────────────┐   ┌──────────────┐
│ LLM Providers│   │ Tool Registry│   │ Integrations │
│ - Anthropic  │   │ - File Ops   │   │ - Sessions   │
│ - OpenRouter │   │ - Bash       │   │ - MCP Client │
│ - OpenAI     │   │ - Search     │   │ - Compaction │
└──────────────┘   └──────────────┘   └──────────────┘

See docs/architecture.md for the complete architecture documentation.

Documentation

| Document | Description | |----------|-------------| | Architecture | System design and data flow | | API Reference | Core interfaces and types | | Extending | Adding providers, tools, integrations | | Skills & Agents | Custom skills and agents | | Tracing | Performance analysis | | Modes Guide | TUI, REPL, plan, subagent, and swarm modes | | Swarm Mode | Multi-model parallel orchestration | | Troubleshooting | Common issues and solutions |

Contributing

See CONTRIBUTING.md for development setup and guidelines.

Uninstall

# If installed from npm
npm uninstall -g attocode

# If installed from source
npm unlink -g attocode

# Remove config and data (optional)
rm -rf ~/.config/attocode
rm -rf ~/.local/share/attocode
rm -rf ~/.local/state/attocode
rm -rf ~/.cache/attocode