Configuration Guide
PILSO OS is powered by two core configuration files:
pilso.config.json
→ global system and runtime settingspilso-roles.json
→ defines agent personalities, goals, and tool access
These files control how your agents think, what tools they can use, which LLM they speak through, and how results are logged or approved.
File 1: pilso.config.json
pilso.config.json
This is the core runtime configuration file. It defines which LLM provider to use, which tools are available, logging levels, and trusted behaviors.
Example
{
"provider": "claude",
"apiKey": "sk-xxxxx",
"tools": [
"http://localhost:3020", // metamask-mcp
"http://localhost:3030", // erc20-mcp
"http://localhost:3040" // solc-mcp
],
"logLevel": "debug",
"alwaysAllow": ["metamask.sign", "chainlist.getRPC"],
"timeoutMs": 30000
}
Field Reference
provider
LLM engine to use (claude
, gpt4
, deepseek
, etc)
apiKey
Your LLM provider API key
tools
List of MCP server endpoints
logLevel
debug
, info
, warn
, or silent
alwaysAllow
List of tool calls that bypass confirmation prompts
timeoutMs
Timeout for tool execution (in milliseconds)
Best Practices
Always whitelist only safe, idempotent tools in
alwaysAllow
Store sensitive fields like
apiKey
in environment variables and reference them via a wrapper script or.env
loaderRun your MCP servers locally or through a secure internal proxy
File 2: pilso-roles.json
pilso-roles.json
This file defines your agent roles — named personalities that guide behavior, limit tool access, and enforce guardrails.
🔧 Example: Minimal signer role
{
"signer": {
"description": "Handles wallet transaction signing only.",
"tools": ["metamask.sign"],
"goals": [
"Interpret prepared transaction payloads",
"Use metamask-mcp to sign after confirmation"
],
"guardrails": [
"Never generate new contracts",
"Never deploy",
"Always confirm intent before signing"
]
}
}
Example: Developer role with compile + sign
{
"developer": {
"description": "A role for contract deployment and tooling.",
"tools": ["solc.compile", "metamask.sign", "chainlist.resolve"],
"goals": [
"Compile smart contracts",
"Prepare and sign deploy transactions",
"Fetch chain config from chainlist-mcp"
],
"guardrails": [
"Never transfer tokens",
"Only deploy approved contracts"
]
}
}
Field Reference
description
Human-readable summary of the agent’s role
tools
Tool functions this role can access (toolName.method
)
goals
Statements used in prompt initialization to guide LLM behavior
guardrails
Safety limitations injected into system prompts
Environment Variables (Optional)
You can store API keys and sensitive settings in an .env
file or via shell variables. For example:
export PILSO_API_KEY="sk-xxxxx"
export PILSO_PROVIDER="claude"
Then dynamically inject them at runtime using a wrapper or config loader in your dev stack.
Updating Configs
You can edit the config files manually, or use built-in CLI helpers:
npx pilso config edit
npx pilso roles add signer
npx pilso roles list
Config Tips
Use separate roles for distinct tasks instead of overloading one agent
For production use, disable any tool from
alwaysAllow
that writes onchainYou can run multiple
.pilso
environments in different projects for sandboxing
Summary
pilso.config.json
Global agent + tool runtime settings
pilso-roles.json
Role definitions for different agent personalities
.env
Store sensitive keys outside your config file
Config files are the brain and personality of your PILSO environment — they define how your agent behaves, what it can access, and how much trust you delegate.
Last updated