Configuration Reference

OpenWork provides comprehensive configuration options through various settings stores and mechanisms. This document covers all available configuration options and their default values.

App Settings

The main application settings are stored using electron-store in the app-settings namespace.

Configuration Schema

Setting Type Default Value Description
debugMode boolean false Enable debug mode to show backend logs in UI
onboardingComplete boolean false Whether the user has completed the onboarding wizard
selectedModel object { provider: 'anthropic', model: 'anthropic/claude-opus-4-5' } Selected AI model configuration

Default Model Configuration

The default selected model is configured as:

{
  provider: 'anthropic',
  model: 'anthropic/claude-opus-4-5'
}

Environment Variables

Development and Testing

Variable Default Description
CLEAN_START undefined Set to 1 to clear all stored data on app start
E2E_SKIP_AUTH undefined Set to 1 to skip onboarding flow (for testing)

Example Usage

# Clean start for development
CLEAN_START=1 pnpm dev

# Skip authentication for testing
E2E_SKIP_AUTH=1 pnpm test:e2e

Task Configuration Options

When starting tasks, you can specify various configuration options:

Basic Configuration

Option Type Required Default Description
prompt string Yes - The task description or command
taskId string No Auto-generated Optional task identifier
sessionId string No undefined Session ID for resuming conversations

Advanced Configuration

Option Type Required Default Description
workingDirectory string No Current directory Working directory for the task
allowedTools string[] No All tools List of allowed tools (max 20)
systemPromptAppend string No undefined Additional system prompt instructions
outputSchema object No undefined JSON schema for structured output

Tool Configuration

The following tools are available for tasks:

Tool Description Restrictions
file File system operations Read/write permissions may be required
terminal Terminal/shell commands Executable permissions may be required
browser Web browser automation Requires browser installation
http HTTP requests Network access may be restricted
mcp MCP server communication Server availability required

Security and Permissions

OpenWork implements several security mechanisms:

Permission Requests

  • Tasks can request permission for file access, network requests, etc.
  • Permission requests are displayed in the UI for user approval
  • File permission requests are handled through a separate MCP server

Tool Restrictions

  • Tools are whitelisted by default
  • The allowedTools array limits which tools a task can use
  • Each tool has specific permission requirements

Directory Access

  • Tasks can specify a working directory
  • File operations are restricted to the working directory and its subdirectories
  • Parent directory access requires explicit permission

API Key Configuration

Supported Providers

OpenWork supports multiple AI providers:

Provider API Key Format Validation Endpoint
Anthropic Starts with sk-ant- https://api.anthropic.com/v1/messages
OpenAI Starts with sk- https://api.openai.com/v1/models
Google Starts with AIza https://generativelanguage.googleapis.com/v1beta/models
Groq Starts with gsk_ https://api.groq.com/openai/v1/models
Custom Any format No validation performed

Storage Security

API keys are stored securely using the operating system’s keychain:

  • macOS: Keychain Access
  • Windows: Credential Manager
  • Linux: Secret Service API

Model Configuration

Available Models

OpenWork supports models from various providers. The exact model list depends on the provider:

Anthropic Models

  • anthropic/claude-opus-4-5
  • anthropic/claude-3-5-sonnet-20241022
  • anthropic/claude-3-haiku-20240307

OpenAI Models

  • openai/gpt-4o
  • openai/gpt-4o-mini
  • openai/gpt-3.5-turbo

Google Models

  • google/gemini-1.5-flash
  • google/gemini-1.5-pro

Groq Models

  • groq/llama-3.1-70b-versatile
  • groq/llama-3.1-8b-instant

Model Selection

The model selection is stored as an object:

{
  provider: string;    // Provider name
  model: string;       // Model identifier
}

Configuration Persistence

Storage Mechanisms

  1. App Settings (electron-store)
    • Location: Platform-specific data directory
    • Format: JSON
    • Automatic backup and versioning
  2. Secure Storage (keytar)
    • Location: OS keychain
    • Format: Encrypted
    • For sensitive data (API keys)
  3. Task History
    • Location: Platform-specific data directory
    • Format: JSON
    • Includes task metadata and conversation history

Data Migration

OpenWork handles data migration between versions:

  • On first upgrade from pre-onboarding versions, existing task history automatically marks onboarding as complete
  • Settings schema evolution is handled by electron-store
  • Breaking changes include migration scripts in the main process

Configuration Examples

Basic Task Configuration

const taskConfig = {
  prompt: "Create a React todo list component",
  workingDirectory: "/Users/user/projects/my-app",
  allowedTools: ["file", "terminal"],
  systemPromptAppend: "Use TypeScript and modern React patterns"
};

Advanced Task with Output Schema

const taskConfig = {
  prompt: "Extract user data from the CSV file",
  workingDirectory: "/data",
  allowedTools: ["file", "http"],
  outputSchema: {
    type: "object",
    properties: {
      users: {
        type: "array",
        items: {
          type: "object",
          properties: {
            id: { type: "number" },
            name: { type: "string" },
            email: { type: "string", format: "email" }
          },
          required: ["id", "name"]
        }
      }
    },
    required: ["users"]
  }
};

Multi-Provider API Key Setup

// Add Anthropic API key
await accomplish.addApiKey('anthropic', 'sk-ant-api03-...');

// Add OpenAI API key
await accomplish.addApiKey('openai', 'sk-...');

// Check which providers have keys
const providers = await accomplish.getAllApiKeys();
console.log(providers);
// Output: { anthropic: { exists: true, prefix: 'sk-ant-a...' }, openai: { exists: true, prefix: 'sk-' } }

Debug Configuration

Debug Mode

When debug mode is enabled:

  • Backend logs are displayed in the UI through debug:log events
  • Task progress updates include detailed information
  • Network requests and tool operations are logged
  • Error messages include more detailed context

Debug Log Format

Debug logs follow this structure:

{
  taskId: string;
  timestamp: string;
  type: string;        // 'info', 'warning', 'error'
  message: string;
  data?: unknown;      // Additional context data
}

Enabling Debug Mode

// Enable debug mode
await accomplish.setDebugMode(true);

// Listen for debug logs
accomplish.onDebugLog((log) => {
  console.log(`[${log.timestamp}] ${log.type}: ${log.message}`, log.data);
});

Performance Configuration

Message Batching

For better performance, task messages are batched:

  • Batch delay: 50ms
  • Maximum batch size: 20 messages
  • Automatic flush on task completion, error, or permission request

Event Subscriptions

Use batched event listeners for better performance:

// Single callback for multiple messages
accomplish.onTaskUpdateBatch((event) => {
  event.messages.forEach(message => {
    // Process each message
  });
});

Security Configuration

File Permissions

OpenWork implements a permission system for file access:

  • Tasks must request permission for file operations
  • File permissions are scoped to specific directories
  • Permission requests are displayed in the UI for user approval

Network Access

  • Browser automation requires permission
  • HTTP requests are allowed by default
  • External URL opening is restricted to http/https protocols

Execution Restrictions

  • Terminal commands run in a restricted environment
  • File system operations are sandboxed to working directories
  • Network access follows browser security policies

Back to top

OpenWork Documentation - Community documentation for accomplish-ai/openwork