How to Configure External Tools Like Codex, Browser, Cloudflare, and ElevenLabs in LifeOS: Complete Setup Guide
Install each tool globally with Bun, authenticate via its login command, and verify with bun <configRoot>/LIFEOS/TOOLS/Doctor.ts to enable cross-vendor audits, web verification, scheduled cloud flows, and voice synthesis in LifeOS.
LifeOS by Daniel Miessler is an open-source AI operating system that integrates multiple third-party services as optional, opt-in capabilities. Configuring these external tools—OpenAI Codex, Interceptor Browser, Cloudflare Wrangler, and ElevenLabs—requires a consistent three-step pattern: installation, authentication, and health verification. This guide walks through the exact commands, configuration file locations, and source code implementation details from the danielmiessler/LifeOS repository.
Overview of External Tool Configuration in LifeOS
LifeOS treats external utilities as service dependencies rather than bundled components. The architecture separates concerns cleanly:
- Installation: Global Bun packages provide CLI binaries
- Authentication: Each tool writes credentials to a hidden directory under
$HOME - Verification: The
Doctor.tshealth checker validates binary presence and auth state - Runtime: Wrapper scripts execute sandboxed commands with timeouts and progress reporting
This design ensures graceful degradation—if a tool is missing or unauthenticated, LifeOS surfaces clear warnings rather than failing silently.
Codex Configuration: Cross-Vendor Audit Capability
OpenAI's Codex CLI enables LifeOS to perform automated code audits and model-based analysis across different AI vendors.
Installation and Authentication
# Install the Codex CLI globally via Bun
bun install -g @openai/codex
# Authenticate with your OpenAI account
codex login
The codex login command creates ~/.codex/auth.json containing your session credentials.
Verification and Health Check
LifeOS validates Codex configuration through [Doctor.ts](https://github.com/danielmiessler/LifeOS/blob/main/LifeOS/install/LIFEOS/TOOLS/Doctor.ts):
// From Doctor.ts lines 292-298
{
id: 'codex',
title: 'Cross‑vendor audit (codex CLI)',
configured: () => which('codex') || existsSync(join(HOME, '.codex')),
check: async () => {
if (!which('codex')) return { ok: false, detail: 'codex binary missing' };
const authed = existsSync(join(HOME, '.codex', 'auth.json'));
return authed ? { ok: true } : { ok: false, detail: 'binary present but not logged in (~/.codex/auth.json missing)' };
},
fixCmd: 'bun install -g @openai/codex && codex login',
}
Run the Doctor to verify:
bun <configRoot>/LIFEOS/TOOLS/Doctor.ts
# Expected output: codex ✅
Model Configuration
Codex execution uses model mappings defined in [models.ts](https://github.com/danielmiessler/LifeOS/blob/main/LifeOS/install/LIFEOS/TOOLS/models.ts). The ForgeProgress.ts wrapper executes Codex commands with sandboxing and progress notifications.
Browser Configuration: Real Web Verification
The Interceptor Browser provides LifeOS with live web scraping and verification capabilities, enabling agents to fetch real-time data beyond training cutoffs.
Installation and Authentication
# Install the Interceptor Browser CLI
bun install -g @interceptor/browser
# Authenticate with a personal access token
browser login
Authentication creates credentials under ~/.interceptor/auth.json.
Verification
Per [GETTING-STARTED.md](https://github.com/danielmiessler/LifeOS/blob/main/LifeOS/install/skills/LifeOS/GETTING-STARTED.md):
bun <configRoot>/LIFEOS/TOOLS/Doctor.ts
# Expected output: browser ✅
The browser tool integrates with LifeOS agents for tasks requiring ground-truth verification—validating URLs, checking live page content, or confirming external service status.
Cloudflare Configuration: Scheduled Cloud Flows
Cloudflare Wrangler enables LifeOS to deploy and manage scheduled background tasks that run on Cloudflare's edge infrastructure.
Installation and Authentication
# Install the Wrangler CLI globally
bun install -g @cloudflare/wrangler
# Authenticate with your Cloudflare account
wrangler login
wrangler login initiates an OAuth flow and stores credentials for subsequent deployments.
Verification
bun <configRoot>/LIFEOS/TOOLS/Doctor.ts
# Expected output: Cloudflare ✅
Component Deployment
LifeOS uses [DeployComponents.ts](https://github.com/danielmiessler/LifeOS/blob/main/LifeOS/install/LIFEOS/TOOLS/DeployComponents.ts) to manage scheduled components:
// From DeployComponents.ts
const COMPONENTS = [
"worksweep",
"derivedsync",
"healthsync",
"codexupdate",
"commitmentsweep",
];
export function deployComponent(component: string) {
if (!COMPONENTS.includes(component)) throw new Error(`Unknown component: ${component}`);
// Deployment logic via wrangler CLI
}
Deploy a scheduled flow:
import { deployComponent } from "./DeployComponents";
// Install the launch agent that polls Codex updates
deployComponent("codexupdate");
ElevenLabs Configuration: Voice Synthesis
ElevenLabs integration provides text-to-speech capabilities for LifeOS agents, enabling audible notifications and voice-driven interactions.
Installation and Authentication
# Install the ElevenLabs CLI
bun install -g @elevenlabs/cli
# Authenticate with your API key
elevenlabs login
Configuration Storage
Unlike other tools, ElevenLabs configuration is managed through LifeOS's own configuration system in [Voice.ts](https://github.com/danielmiessler/LifeOS/blob/main/LifeOS/install/LIFEOS/TOOLS/Voice.ts):
// From Voice.ts
import { join } from "path";
import { existsSync, readFileSync } from "fs";
import { HOME } from "../../utils";
const VOICE_DIR = join(HOME, ".claude", "LIFEOS", "TOOLS", "voice");
const CONFIG_FILE = join(VOICE_DIR, "config.json");
export function getVoiceConfig() {
if (!existsSync(CONFIG_FILE)) return null;
const raw = readFileSync(CONFIG_FILE, "utf8");
return JSON.parse(raw);
}
export function setVoiceConfig(apiKey: string, voiceId?: string) {
// Writes to ~/.claude/LIFEOS/TOOLS/voice/config.json
}
Verification
bun <configRoot>/LIFEOS/TOOLS/Doctor.ts
# Expected output: ElevenLabs ✅
Using Voice in LifeOS Agents
import { getVoiceConfig } from "./Voice";
const cfg = getVoiceConfig();
if (cfg?.apiKey) {
const cmd = `elevenlabs speak --voice=${cfg.voiceId || "default"} --text="Task completed"`;
// Execute via child_process with LifeOS sandboxing
}
Complete Configuration Checklist
| Tool | Install Command | Auth Command | Auth File Location | Doctor Check |
|---|---|---|---|---|
| Codex | bun install -g @openai/codex |
codex login |
~/.codex/auth.json |
codex ✅ |
| Browser | bun install -g @interceptor/browser |
browser login |
~/.interceptor/auth.json |
browser ✅ |
| Cloudflare | bun install -g @cloudflare/wrangler |
wrangler login |
Cloudflare-managed | Cloudflare ✅ |
| ElevenLabs | bun install -g @elevenlabs/cli |
elevenlabs login |
~/.claude/LIFEOS/TOOLS/voice/config.json |
ElevenLabs ✅ |
Troubleshooting Common Configuration Issues
Binary Not Found After Installation
Ensure Bun's global bin directory is on your PATH. LifeOS checks via which() in Doctor.ts, falling back to common installation paths.
Authentication File Missing
Re-run the login command for the specific tool. LifeOS validates auth file existence before marking a service as operational.
Doctor Reports Tool Unhealthy
Use the fixCmd field from Doctor.ts output—which prints the exact install/login sequence needed to restore functionality.
Summary
- Install all four tools globally via
bun install -gusing the exact package names fromGETTING-STARTED.md - Authenticate with each tool's login command to generate credential files in
~/.codex,~/.interceptor, or~/.claude/LIFEOS/TOOLS - Verify configuration state using
bun <configRoot>/LIFEOS/TOOLS/Doctor.ts, which checks binary presence and auth validity - Consume tools through LifeOS wrappers like
ForgeProgress.ts(Codex),Voice.ts(ElevenLabs), andDeployComponents.ts(Cloudflare) - Reference [
GETTING-STARTED.md](https://github.com/danielmiessler/LifeOS/blob/main/LifeOS/install/skills/LifeOS/GETTING-STARTED.md) for authoritative installation instructions and [Doctor.ts](https://github.com/danielmiessler/LifeOS/blob/main/LifeOS/install/LIFEOS/TOOLS/Doctor.ts) for health check implementation details
Frequently Asked Questions
Do I need all four external tools to run LifeOS?
No. LifeOS operates with graceful degradation—each external tool is optional. Missing tools simply disable their corresponding capabilities; core LifeOS functionality remains available. The Doctor.ts health checker clearly indicates which services are operational versus unavailable.
Where does LifeOS store tool configurations?
Most tools use their default CLI locations: Codex (~/.codex/), Browser (~/.interceptor/), and Wrangler (Cloudflare-managed). ElevenLabs uses LifeOS's centralized config at ~/.claude/LIFEOS/TOOLS/voice/config.json as implemented in Voice.ts.
Can I use npm or pnpm instead of Bun for installation?
The official LifeOS documentation specifies Bun for all global installations. While other package managers may work, the Doctor.ts health checks and fixCmd recommendations assume Bun's installation paths. Using Bun ensures compatibility with the verification system.
How do I update an external tool's authentication?
Re-run the login command for that tool (e.g., codex login, wrangler login). LifeOS reads auth files fresh on each Doctor check or tool invocation, so updated credentials take effect immediately without LifeOS restart.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →