The AI agent runtime
you run yourself.

Build a team of virtual employees that handles your inbox, answers customers, digs through your site's data, and runs your Google and Meta ad campaigns: practically anything you'd do yourself. It runs on your own server, with your own keys, under your control.

# install (one line)
curl -fsSL https://pepe-agent.com/install.sh | sh

# scaffold, connect a model, add an agent
pepe setup
pepe model add openrouter --api-key '${OPENROUTER_API_KEY}' --model openai/gpt-5-chat
pepe agent add assistant --tools bash,web_search,send_file

# talk to it, or serve it to every surface
pepe run assistant "summarize this repo"
pepe serve --port 4000

Stop prompting. Define the outcome.

A prompt buys one turn: the agent answers, and you decide whether it's good enough. That makes you the bottleneck, approver and quality inspector at once, and the work only moves while you're at the keyboard. Give it a goal instead: say what "done" means, and Pepe keeps working until an independent reviewer agrees it's met.

# a prompt gets you one answer, and you grade it
pepe run "clean up the customer list"

# a goal keeps working until a reviewer says it's actually done
pepe goal "clean up the customer list" \
  --criteria "no duplicate emails, every row has a valid phone"

Turn loop

Calls tools, reads the results, calls more. Stops when it has a real answer, not a guess.

Goal loop

You set the objective and what counts as done. An independent reviewer decides, not the agent. Not there yet? It gets the feedback and tries again.

Time loop

Recurring work on a schedule. Runs on its own and catches up on whatever it missed.


One agent, every surface

Define an agent once. Use it from the surface that fits the job, with the same tools and memory.

CLI

One-shot runs and an interactive REPL.

HTTP API

OpenAI-compatible: /chat/completions and /models, from any SDK.

WebSocket

A WebSocket connection for live, streaming conversations.

Channels

Telegram, WhatsApp, Slack, Discord, Teams, Google Chat.

What people build with Pepe

Common jobs once the right tools are connected.

Social media management

Schedule posts, answer comments, and track mentions across platforms.

Inbox triage

Read your inbox, draft replies, and file messages by topic.

Ad campaign ops

Watch spend and performance across Meta, Google, and LinkedIn Ads, then report daily.

Customer support

Answer people on WhatsApp, Slack, or Telegram, with human handoff when it matters.

Scheduling & reminders

Recurring tasks and one-shot watches that notify you when something changes.

Reports & analytics

Pull numbers from your own tools and ship a summary on a schedule.

Error monitoring

Watch Sentry, AppSignal, and other monitoring tools, then surface what actually needs a human.

Database insights

Query your database and turn raw numbers into useful next steps.

Meeting notes & recaps

Turn a transcript into a summary and action items, delivered where the team already talks.


The essentials for real agents

Model access, tools, automation, plugins, and control in a small self-hosted runtime.

Any model, with failover

Connect any OpenAI-compatible endpoint. Set a fallback chain that advances on transient errors.

Real tool-calling loop

Built-in tools for shell, files, web, scripts, and file delivery. Add your own in minutes.

Goals, not just prompts

Give an objective and what counts as done. An independent reviewer decides whether it is met, and the agent retries with that feedback until it passes or hits your attempt cap.

Complexity-based routing

A cheap classification call judges each new conversation. Simple questions downgrade automatically to a lighter model; full power stays for what actually needs it.

Scheduled tasks

Timezone-aware cron inside Pepe. Agents can propose schedules from chat, gated by your approval.

Learning & memory

The agent remembers what it learns (facts, preferences, the people it deals with) and reuses it in later conversations. Read and edit any memory from the dashboard.

Plugins at runtime

Install a plugin - a new tool, a redaction hook, a safety policy, or a channel - and it's live right away, no rebuild.

Spend & message caps

Cap each company by spend and by messages: a monthly budget in US dollars and a monthly message limit. Both metered live, turning red on the dashboard as they run out.

Control & safety

Risky tools ask for approval first. Every run is traced, and command guardrails stay on by default.


Meet people where they are

Connect a channel and the agent answers there. Files, handoff, and scoping are built in.

Telegram WhatsApp Slack Discord Microsoft Teams Google Chat+ plugins
Meet people where they are

Or drop it straight on your site

Paste one script tag on your page and this exact bubble goes live: no backend to write, no build step. A handful of optional attributes set the color, greeting, and language, so every visitor gets answered in the site's own language from the first message.

See the widget docs →
Or drop it straight on your site

Privacy by design

Sensitive data is never sent to an external model in the clear, helping you meet requirements like LGPD, GDPR, and HIPAA.

What the user sends

My SSN is 123-45-6789, can you check my order?

The message exactly as they typed it.

What reaches the model

My SSN is [SSN_1], can you check my order?

Pepe swaps the sensitive value for a token before the request ever leaves your server.

What the model answers

Found the order for [SSN_1]: it ships tomorrow.

It reasons over the token. It never saw the real value, and never stored it.

What the user gets back

Found the order for 123-45-6789: it ships tomorrow.

Pepe puts the real value back, on your side only.

Privacy by design

Inside a single turn

Zooming into the turn loop: Pepe calls the model, runs the tool calls it asks for, feeds the results back, and stops when the answer is ready.

1

Call the model

Send the conversation and the agent's tool specs to the model (with failover).

2

Run tool calls

Execute what the model asked for. Shell, files, web. Through the permission gate.

3

Feed results back

Append each tool result to the conversation and call the model again.

4

Answer & deliver

Return the final reply on the surface that asked, then record the run as a trace.

Where Pepe comes from

Pepe was born out of solving real problems across a range of companies I provided development services to: some needed a simple way to run their marketing without expanding headcount; others wanted to connect their ERP and database to an agent capable of answering their team's questions, without compromising on security. The project didn't start as open source: it was internal, proprietary tooling, custom-built for each client. But the results proved consistent enough, across different enough businesses, that I decided to give it a name, an identity of its own, and release it as open source, for anyone to use and contribute to.

Pepe

Why "Pepe"?

The name nods to Chespirito's comedy universe, loved across Latin America. Pepe's joke was simple: he did exactly what he was told. No debate, no freelancing. That is a pretty good brief for an agent runtime.

Run your own agents in minutes

Open source. Bring your model. Keep the runtime, keys, and data under your control.