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
allowedToolsarray 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 |
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-5anthropic/claude-3-5-sonnet-20241022anthropic/claude-3-haiku-20240307
OpenAI Models
openai/gpt-4oopenai/gpt-4o-miniopenai/gpt-3.5-turbo
Google Models
google/gemini-1.5-flashgoogle/gemini-1.5-pro
Groq Models
groq/llama-3.1-70b-versatilegroq/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
- App Settings (
electron-store)- Location: Platform-specific data directory
- Format: JSON
- Automatic backup and versioning
- Secure Storage (
keytar)- Location: OS keychain
- Format: Encrypted
- For sensitive data (API keys)
- 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:logevents - 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