| name | burner-agents-privacy |
| description | Deploy disposable AI agents for unattributable web interaction with automatic identity destruction |
| triggers | ["create a burner agent to browse anonymously","set up disposable agents for web automation","use burner agents for privacy-preserving web interaction","configure swarm of unattributable agents","automate web tasks with disposable identities","deploy privacy agents that destroy themselves after completion","set up isolated browser contexts for each agent","orchestrate multiple burner agents for a task"] |
Burner Agents Privacy Skill
Skill by ara.so — AI Agent Skills collection.
Overview
Burner Agents is a Python framework for deploying disposable AI agents that interact with the web on your behalf. Each agent runs in an isolated browser context with a unique fingerprint and is destroyed immediately after completing its task, preventing tracking and profile building. The system provides non-attribution, non-linkability, and ensures no persistent profile is created.
Installation
git clone https://github.com/NotPBShaw/burner-agents.git
cd burner-agents
pip install -r requirements.txt
pip install burner-agents
Core Architecture
The project has four main components:
- isolation/: Fresh, separable browser context per agent
- reasoning/: Turns intent into actions, reasoning over each page live
- orchestration/: Decomposes tasks, fans across agents, reconciles results
- identity/: Instantiated on task start, destroyed on completion
Basic Usage
Single Agent Task
from burner.agent import BurnerAgent
from burner.task import Task
task = Task(
intent="Find the top 3 Python AI frameworks on GitHub",
max_agents=1
)
agent = BurnerAgent()
result = agent.execute(task)
print(result.data)
Multi-Agent Swarm
from burner.orchestration import Swarm
from burner.task import Task
task = Task(
intent="Compare pricing across 5 cloud providers",
max_agents=5,
parallel=True
)
swarm = Swarm(size=5)
results = swarm.execute(task)
for result in results:
print(f"Provider: {result.provider}, Price: {result.price}")
Configuration
Environment Variables
export BURNER_LLM_PROVIDER="anthropic"
export ANTHROPIC_API_KEY="your-api-key"
export BURNER_HEADLESS=true
export BURNER_TIMEOUT=30000
export BURNER_PROXY_ROTATION=true
export BURNER_PROXY_POOL_SIZE=10
export BURNER_FINGERPRINT_RANDOMIZATION=true
Configuration File
from burner.config import BurnerConfig
config = BurnerConfig(
isolation={
"browser": "chromium",
"headless": True,
"separate_contexts": True,
"clear_on_complete": True
},
reasoning={
"provider": "anthropic",
"model": "claude-3-5-sonnet-20241022",
"max_steps": 50,
"live_page_analysis": True
},
orchestration={
"max_parallel_agents": 10,
"task_decomposition": "auto",
"result_reconciliation": True
},
identity={
"fingerprint_source": "random",
"destroy_on_complete": True,
"no_state_retention": True
}
)
Agent Isolation
Creating Isolated Browser Contexts
from burner.isolation import IsolatedContext
from burner.identity import generate_identity
identity = generate_identity()
context = IsolatedContext(
fingerprint=identity.fingerprint,
user_agent=identity.user_agent,
viewport=identity.viewport,
timezone=identity.timezone,
locale=identity.locale,
device_characteristics=identity.device
)
async with context.browser() as browser:
page = await browser.new_page()
await page.goto("https://example.com")
Custom Fingerprinting
from burner.identity import Fingerprint
fingerprint = Fingerprint(
canvas_noise=True,
webgl_vendor="random",
audio_context_noise=True,
client_rects_noise=True,
screen_resolution=(1920, 1080),
color_depth=24,
hardware_concurrency=8,
device_memory=8
)
context = IsolatedContext(fingerprint=fingerprint)
Reasoning Engine
Natural Language to Actions
from burner.reasoning import ReasoningEngine
from burner.isolation import IsolatedContext
engine = ReasoningEngine(
provider="anthropic",
model="claude-3-5-sonnet-20241022"
)
async with IsolatedContext() as context:
page = await context.new_page()
result = await engine.reason_and_act(
page=page,
intent="Navigate to Hacker News and find the top story about AI",
max_steps=20
)
print(result.final_answer)
print(f"Steps taken: {len(result.steps)}")
Step-by-Step Reasoning
from burner.reasoning import Step
async with IsolatedContext() as context:
page = await context.new_page()
steps = []
current_intent = "Find pricing information"
while not engine.is_complete(steps, current_intent):
analysis = await engine.analyze_page(page)
action = await engine.decide_action(
page_state=analysis,
intent=current_intent,
history=steps
)
result = await engine.execute_action(page, action)
steps.append(Step(action=action, result=result))
final_result = engine.synthesize(steps)
Orchestration Patterns
Task Decomposition
from burner.orchestration import TaskDecomposer, Swarm
decomposer = TaskDecomposer()
subtasks = decomposer.decompose(
intent="Research and compare 10 project management tools",
max_agents=10
)
swarm = Swarm(size=len(subtasks))
results = await swarm.execute_parallel(subtasks)
final_report = decomposer.reconcile(results)
Fan-Out Pattern
from burner.orchestration import FanOut
fanout = FanOut(
task=Task(intent="Check if service is available"),
agent_count=3,
reconciliation_strategy="majority"
)
results = await fanout.execute()
print(f"Service available: {results.consensus}")
print(f"Agreement: {results.agreement_percentage}%")
Sequential Pipeline
from burner.orchestration import Pipeline
pipeline = Pipeline([
Task(intent="Find the top AI research papers this week"),
Task(intent="Summarize the key findings from these papers"),
Task(intent="Identify practical applications")
])
result = await pipeline.execute()
print(result.final_output)
Identity Management
Identity Lifecycle
from burner.identity import IdentityManager
manager = IdentityManager()
identity = manager.create()
print(f"Identity ID: {identity.id}")
print(f"Created: {identity.created_at}")
agent = BurnerAgent(identity=identity)
result = await agent.execute(task)
manager.destroy(identity.id)
assert manager.get(identity.id) is None
Custom Identity Attributes
from burner.identity import Identity, DeviceProfile
device = DeviceProfile(
device_type="desktop",
os="macos",
browser="chrome",
version="120.0.0.0"
)
identity = Identity(
device=device,
location="US-CA-SanFrancisco",
language="en-US",
connection_type="wifi"
)
agent = BurnerAgent(identity=identity)
Complete Example: Privacy-Preserving Research
import asyncio
from burner.agent import BurnerAgent
from burner.task import Task
from burner.orchestration import Swarm
from burner.config import BurnerConfig
async def privacy_research():
config = BurnerConfig(
isolation={"headless": True, "separate_contexts": True},
identity={"destroy_on_complete": True, "no_state_retention": True}
)
task = Task(
intent="""
Research the top 5 privacy-focused email providers.
For each: pricing, features, jurisdiction, encryption standards.
""",
max_agents=5
)
swarm = Swarm(size=5, config=config)
results = await swarm.execute(task)
for i, result in enumerate(results, 1):
print(f"\nProvider {i}:")
print(f" Name: {result.provider_name}")
print(f" Pricing: {result.pricing}")
print(f" Jurisdiction: {result.jurisdiction}")
print(f" Encryption: {result.encryption}")
assert swarm.active_agents() == 0
assert swarm.retained_state() is None
if __name__ == "__main__":
asyncio.run(privacy_research())
Advanced Patterns
Rate Limiting & Throttling
from burner.orchestration import ThrottledSwarm
import asyncio
swarm = ThrottledSwarm(
size=10,
requests_per_minute=30,
jitter=True,
delay_range=(2, 8)
)
results = await swarm.execute(task)
Rotating Proxy Integration
from burner.isolation import ProxyRotator
rotator = ProxyRotator(
proxy_list=[
"http://proxy1.example.com:8080",
"http://proxy2.example.com:8080",
"http://proxy3.example.com:8080"
],
rotation_strategy="random"
)
context = IsolatedContext(proxy_rotator=rotator)
Result Validation
from burner.orchestration import Validator
validator = Validator(
consensus_threshold=0.7,
min_agents=3
)
swarm = Swarm(size=5)
raw_results = await swarm.execute(task)
validated_result = validator.validate(raw_results)
if validated_result.consensus_reached:
print(f"Validated result: {validated_result.data}")
else:
print(f"No consensus. Confidence: {validated_result.confidence}")
Troubleshooting
Agent Fails to Complete
from burner.agent import BurnerAgent
from burner.exceptions import AgentTimeoutError, ReasoningError
try:
agent = BurnerAgent(timeout=60000)
result = await agent.execute(task)
except AgentTimeoutError as e:
print(f"Agent timed out after {e.elapsed}ms")
print(f"Last action: {e.last_action}")
except ReasoningError as e:
print(f"Reasoning failed: {e.message}")
print(f"Page state: {e.page_state}")
Browser Context Not Isolated
from burner.isolation import verify_isolation
context1 = IsolatedContext()
context2 = IsolatedContext()
assert context1.fingerprint != context2.fingerprint
isolation_report = verify_isolation([context1, context2])
print(f"Fully isolated: {isolation_report.is_isolated}")
print(f"Shared elements: {isolation_report.shared_elements}")
Identity Not Destroyed
from burner.identity import IdentityManager
manager = IdentityManager(strict_destruction=True)
identity = manager.create()
agent = BurnerAgent(identity=identity)
try:
result = await agent.execute(task)
finally:
manager.destroy(identity.id, verify=True)
assert manager.get(identity.id) is None
assert identity.has_remnants() is False
High Memory Usage with Many Agents
from burner.orchestration import ResourceConstrainedSwarm
swarm = ResourceConstrainedSwarm(
max_size=20,
max_concurrent=5,
memory_limit_mb=2048
)
results = await swarm.execute(task)
Best Practices
- Always destroy identities: Use context managers or try/finally blocks
- Validate agent isolation: Verify fingerprints differ between agents
- Use environment variables: Never hardcode API keys or secrets
- Monitor resource usage: Limit concurrent agents based on system capacity
- Enable result validation: Use multiple agents for critical tasks
- Implement rate limiting: Avoid detection through timing analysis
- Rotate network egress: Use proxy rotation for additional anonymity
- Check destruction: Verify no state retained after task completion
Legal & Compliance Notice
This tool is for privacy-preserving web interaction. You are responsible for:
- Complying with websites' terms of service
- Following applicable laws in your jurisdiction
- Using the tool ethically and responsibly
The framework provides technical capabilities; legal compliance is the user's responsibility.