fork: rename IronClaw → OptimClaw

Full rename of all identifiers, filenames, and references:
  ironclaw → optimclaw
  IronClaw → OptimClaw
  IRONCLAW → OPTIMCLAW
  ironclaw_common → optimclaw_common
  ironclaw_safety → optimclaw_safety

Upstream: nearai/ironclaw
This commit is contained in:
OutBack Dingo
2026-03-29 06:27:52 +07:00
parent 8a320ae9db
commit 6d9dbbb3b9
404 changed files with 2382 additions and 2382 deletions
+1 -1
View File
@@ -5,7 +5,7 @@ argument-hint: <event_name> [description]
model: opus model: opus
--- ---
Add a new SSE event called `$ARGUMENTS` to the IronClaw web gateway. This involves changes across 5 files in a specific order. Follow each step exactly. Add a new SSE event called `$ARGUMENTS` to the OptimClaw web gateway. This involves changes across 5 files in a specific order. Follow each step exactly.
## Step 1: Add `StatusUpdate` variant ## Step 1: Add `StatusUpdate` variant
+2 -2
View File
@@ -5,7 +5,7 @@ argument-hint: <tool_name> [description]
model: opus model: opus
--- ---
Scaffold a new tool called `$ARGUMENTS` for the IronClaw agent. First, determine the tool type and then follow the appropriate path. Scaffold a new tool called `$ARGUMENTS` for the OptimClaw agent. First, determine the tool type and then follow the appropriate path.
## Step 0: Determine tool type ## Step 0: Determine tool type
@@ -43,7 +43,7 @@ Follow this exact pattern (adjust name and description):
name = "<name>-tool" name = "<name>-tool"
version = "0.1.0" version = "0.1.0"
edition = "2021" edition = "2021"
description = "<Description> tool for IronClaw (WASM component)" description = "<Description> tool for OptimClaw (WASM component)"
license = "MIT OR Apache-2.0" license = "MIT OR Apache-2.0"
publish = false publish = false
+2 -2
View File
@@ -62,7 +62,7 @@ Enter planning mode to design the implementation. The plan MUST cover:
- Happy path (expected input produces expected output) - Happy path (expected input produces expected output)
- Error paths (invalid input, missing data, permission denied) - Error paths (invalid input, missing data, permission denied)
- Edge cases (empty collections, boundary values, concurrent access) - Edge cases (empty collections, boundary values, concurrent access)
5. **IronClaw-specific concerns**: 5. **OptimClaw-specific concerns**:
- If the change touches persistence, both database backends must be updated (`postgres.rs` and `libsql_backend.rs`) - If the change touches persistence, both database backends must be updated (`postgres.rs` and `libsql_backend.rs`)
- New `Database` trait methods need implementations in both backends - New `Database` trait methods need implementations in both backends
- No `.unwrap()` or `.expect()` in production code - No `.unwrap()` or `.expect()` in production code
@@ -80,7 +80,7 @@ After the plan is approved:
1. Implement each change from the plan. 1. Implement each change from the plan.
2. Write all planned tests. 2. Write all planned tests.
3. Run IronClaw's full quality gate: 3. Run OptimClaw's full quality gate:
- `cargo fmt` - `cargo fmt`
- `cargo clippy --all --benches --tests --examples --all-features` (zero warnings) - `cargo clippy --all --benches --tests --examples --all-features` (zero warnings)
- `cargo test --lib` (all tests pass) - `cargo test --lib` (all tests pass)
+3 -3
View File
@@ -96,7 +96,7 @@ Wait for user confirmation (unless `--fix` flag set), then proceed to Phase 3.
Read EVERY changed file in full (not just diff hunks). For PRs touching >20 files, prioritize: service logic > handlers > types > tests > docs. Batch reads in parallel via Agent tool. Read EVERY changed file in full (not just diff hunks). For PRs touching >20 files, prioritize: service logic > handlers > types > tests > docs. Batch reads in parallel via Agent tool.
### IronClaw-specific checks (always) ### OptimClaw-specific checks (always)
- No `.unwrap()` or `.expect()` in production code - No `.unwrap()` or `.expect()` in production code
- Prefer `crate::` for cross-module imports (`super::` OK in tests/intra-module) - Prefer `crate::` for cross-module imports (`super::` OK in tests/intra-module)
- Error types use `thiserror` - Error types use `thiserror`
@@ -167,7 +167,7 @@ gh pr checkout {number}
1. All approved review comment fixes (from Phase 2a) 1. All approved review comment fixes (from Phase 2a)
2. All approved review findings (from Phase 2b) 2. All approved review findings (from Phase 2b)
Follow IronClaw conventions: Follow OptimClaw conventions:
- `thiserror` for errors - `thiserror` for errors
- `crate::` imports - `crate::` imports
- No `.unwrap()` in production - No `.unwrap()` in production
@@ -180,7 +180,7 @@ After all fixes implemented, proceed to Phase 4.
## Phase 4: Quality Gate ## Phase 4: Quality Gate
Run the full IronClaw shipping checklist: Run the full OptimClaw shipping checklist:
```bash ```bash
cargo fmt cargo fmt
+2 -2
View File
@@ -60,7 +60,7 @@ Wait for user confirmation before proceeding to implementation.
After user confirms: After user confirms:
1. Implement each fix in the plan. 1. Implement each fix in the plan.
2. Run IronClaw's quality gate to verify nothing breaks: 2. Run OptimClaw's quality gate to verify nothing breaks:
- `cargo fmt` - `cargo fmt`
- `cargo clippy --all --benches --tests --examples --all-features` - `cargo clippy --all --benches --tests --examples --all-features`
- `cargo test --lib` - `cargo test --lib`
@@ -77,5 +77,5 @@ For each comment addressed, reply on the PR with a short message stating what wa
- Group duplicate comments (same issue reported by multiple bots) and reply to all of them. - Group duplicate comments (same issue reported by multiple bots) and reply to all of them.
- Do not make changes beyond what the review comments ask for. Stay focused. - Do not make changes beyond what the review comments ask for. Stay focused.
- If a comment suggests a change you disagree with, present your reasoning to the user during the planning phase rather than silently ignoring it. - If a comment suggests a change you disagree with, present your reasoning to the user during the planning phase rather than silently ignoring it.
- Follow IronClaw conventions: no `.unwrap()` in production code, use `crate::` imports, `thiserror` errors. - Follow OptimClaw conventions: no `.unwrap()` in production code, use `crate::` imports, `thiserror` errors.
- If changes touch persistence, verify both database backends are updated. - If changes touch persistence, verify both database backends are updated.
+6 -6
View File
@@ -1,5 +1,5 @@
--- ---
description: Deep audit of the IronClaw crate for vulnerabilities, bugs, unfinished work, inconsistencies, and oversights description: Deep audit of the OptimClaw crate for vulnerabilities, bugs, unfinished work, inconsistencies, and oversights
disable-model-invocation: true disable-model-invocation: true
allowed-tools: Bash(cargo fmt:*), Bash(cargo clippy:*), Bash(cargo test:*), Bash(cargo audit:*), Bash(git diff:*), Bash(git log:*), Bash(git show:*), Bash(wc:*), Read, Grep, Glob, Task allowed-tools: Bash(cargo fmt:*), Bash(cargo clippy:*), Bash(cargo test:*), Bash(cargo audit:*), Bash(git diff:*), Bash(git log:*), Bash(git show:*), Bash(wc:*), Read, Grep, Glob, Task
argument-hint: "[path/to/crate]" argument-hint: "[path/to/crate]"
@@ -93,7 +93,7 @@ Search for `.unwrap()`, `.expect(`, `panic!`, `unreachable!` in non-test code. F
- Is there a code path that reaches this with None/Err? - Is there a code path that reaches this with None/Err?
- Should it be replaced with proper error handling (`?`, `.ok()`, `.unwrap_or_default()`)? - Should it be replaced with proper error handling (`?`, `.ok()`, `.unwrap_or_default()`)?
IronClaw convention: `.unwrap()` and `.expect()` are banned in production code. Any occurrence outside `#[cfg(test)]` blocks is a **High severity** finding. OptimClaw convention: `.unwrap()` and `.expect()` are banned in production code. Any occurrence outside `#[cfg(test)]` blocks is a **High severity** finding.
### 5c. SQL and injection vectors ### 5c. SQL and injection vectors
@@ -102,7 +102,7 @@ Search for string formatting used in SQL queries, shell commands, or HTML:
- String interpolation in query construction vs parameterized queries - String interpolation in query construction vs parameterized queries
- User input flowing into file paths (`Path::new`, `std::fs::`) - User input flowing into file paths (`Path::new`, `std::fs::`)
IronClaw has two database backends (PostgreSQL and libSQL). Check both for injection vectors. OptimClaw has two database backends (PostgreSQL and libSQL). Check both for injection vectors.
### 5d. Cryptographic issues ### 5d. Cryptographic issues
@@ -125,7 +125,7 @@ If the crate uses crypto:
- Are errors swallowed silently? (`let _ = ...`, `.ok()` discarding errors that matter) - Are errors swallowed silently? (`let _ = ...`, `.ok()` discarding errors that matter)
- Do error types carry enough context to debug in production? - Do error types carry enough context to debug in production?
- Are there error type mismatches? (returning generic `anyhow::Error` where a typed error would prevent confusion) - Are there error type mismatches? (returning generic `anyhow::Error` where a typed error would prevent confusion)
- Is `thiserror` used consistently for error types (IronClaw convention)? - Is `thiserror` used consistently for error types (OptimClaw convention)?
## Step 6: Check for inconsistencies ## Step 6: Check for inconsistencies
@@ -156,7 +156,7 @@ Look for:
### 6e. Import style ### 6e. Import style
IronClaw convention: use `crate::` imports, not `super::`. Flag any `super::` imports in non-test code. OptimClaw convention: use `crate::` imports, not `super::`. Flag any `super::` imports in non-test code.
## Step 7: Inspect for change oversights ## Step 7: Inspect for change oversights
@@ -172,7 +172,7 @@ IronClaw convention: use `crate::` imports, not `super::`. Flag any `super::` im
- Are there `impl` blocks that look incomplete? - Are there `impl` blocks that look incomplete?
- Are `Default` implementations sensible? - Are `Default` implementations sensible?
IronClaw key traits: `Database` (~60 methods), `Channel`, `Tool`, `LlmProvider`, `SuccessEvaluator`, `EmbeddingProvider`. If any new methods were added to `Database`, verify both `postgres.rs` and `libsql_backend.rs` implement them. OptimClaw key traits: `Database` (~60 methods), `Channel`, `Tool`, `LlmProvider`, `SuccessEvaluator`, `EmbeddingProvider`. If any new methods were added to `Database`, verify both `postgres.rs` and `libsql_backend.rs` implement them.
### 7c. Test coverage gaps ### 7c. Test coverage gaps
+2 -2
View File
@@ -49,9 +49,9 @@ If the PR touches more than 20 files, still read all of them, but process in thi
Go through the changes with each of these lenses. For every finding, note the file, line range, severity, and a concrete description. Go through the changes with each of these lenses. For every finding, note the file, line range, severity, and a concrete description.
### IronClaw-specific checks ### OptimClaw-specific checks
In addition to the general lenses below, check IronClaw conventions (see CLAUDE.md): In addition to the general lenses below, check OptimClaw conventions (see CLAUDE.md):
- No `.unwrap()` or `.expect()` in production code (tests are fine) - No `.unwrap()` or `.expect()` in production code (tests are fine)
- Use `crate::` imports, not `super::` - Use `crate::` imports, not `super::`
- Error types use `thiserror` in `error.rs` - Error types use `thiserror` in `error.rs`
+1 -1
View File
@@ -3,7 +3,7 @@ description: Run the full Rust quality gate (fmt, clippy, tests) before shipping
allowed-tools: Bash(cargo fmt:*), Bash(cargo clippy:*), Bash(cargo test:*) allowed-tools: Bash(cargo fmt:*), Bash(cargo clippy:*), Bash(cargo test:*)
--- ---
Run the IronClaw shipping checklist. This is the mandatory quality gate before any change is considered done. Run the OptimClaw shipping checklist. This is the mandatory quality gate before any change is considered done.
## Steps ## Steps
+3 -3
View File
@@ -1,15 +1,15 @@
--- ---
description: Trace a data flow or bug through the IronClaw codebase end-to-end description: Trace a data flow or bug through the OptimClaw codebase end-to-end
allowed-tools: Read, Glob, Grep, Bash(cargo test:*) allowed-tools: Read, Glob, Grep, Bash(cargo test:*)
argument-hint: <symptom or feature name> argument-hint: <symptom or feature name>
model: sonnet model: sonnet
--- ---
Trace the flow of `$ARGUMENTS` through the IronClaw codebase. Your job is to map every file and function involved, identify where data transforms or could break, and report the full chain. Trace the flow of `$ARGUMENTS` through the OptimClaw codebase. Your job is to map every file and function involved, identify where data transforms or could break, and report the full chain.
## Architecture Reference ## Architecture Reference
IronClaw has three main data flow paths. Identify which one(s) are relevant and trace through them: OptimClaw has three main data flow paths. Identify which one(s) are relevant and trace through them:
### Message Flow (user input to LLM response) ### Message Flow (user input to LLM response)
``` ```
+2 -2
View File
@@ -11,8 +11,8 @@ SKILL.md files extend the agent's prompt with domain-specific instructions. Each
| Trust Level | Source | Tool Access | | Trust Level | Source | Tool Access |
|-------------|--------|-------------| |-------------|--------|-------------|
| **Trusted** | User-placed in `~/.ironclaw/skills/` or workspace `skills/` | All tools available to the agent | | **Trusted** | User-placed in `~/.optimclaw/skills/` or workspace `skills/` | All tools available to the agent |
| **Installed** | Downloaded from ClawHub registry (`~/.ironclaw/installed_skills/`) | Read-only tools only (no shell, file write, HTTP) | | **Installed** | Downloaded from ClawHub registry (`~/.optimclaw/installed_skills/`) | Read-only tools only (no shell, file write, HTTP) |
## SKILL.md Format ## SKILL.md Format
+1 -1
View File
@@ -7,7 +7,7 @@ paths:
**Keep tool-specific logic out of the main agent codebase.** The main agent provides generic infrastructure; tools are self-contained units that declare requirements through `<name>.capabilities.json` sidecar files (in dev mode: `tools-src/<name>/<name>-tool.capabilities.json`). **Keep tool-specific logic out of the main agent codebase.** The main agent provides generic infrastructure; tools are self-contained units that declare requirements through `<name>.capabilities.json` sidecar files (in dev mode: `tools-src/<name>/<name>-tool.capabilities.json`).
Tools can be WASM (sandboxed, credential-injected, single binary) or MCP servers (ecosystem, any language, no sandbox). Both are first-class via `ironclaw tool install`. Tools can be WASM (sandboxed, credential-injected, single binary) or MCP servers (ecosystem, any language, no sandbox). Both are first-class via `optimclaw tool install`.
See `src/tools/README.md` for full architecture, adding new tools, auth JSON examples, and WASM vs MCP decision guide. See `src/tools/README.md` for full architecture, adding new tools, auth JSON examples, and WASM vs MCP decision guide.
+1 -1
View File
@@ -28,7 +28,7 @@ jobs:
uses: anthropics/claude-code-action@v1 uses: anthropics/claude-code-action@v1
with: with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }} anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
allowed_bots: "ironclaw-ci[bot]" allowed_bots: "optimclaw-ci[bot]"
claude_args: "--max-turns 50 --model claude-haiku-4-5-20251001 --allowedTools 'Read,Glob,Grep,Agent,Bash(gh pr comment:*),Bash(gh pr diff:*),Bash(gh pr view:*),Bash(gh pr list:*),Bash(gh issue view:*),Bash(gh issue list:*),Bash(gh search:*),Bash(git blame:*),Bash(git log:*),Bash(git diff:*)'" claude_args: "--max-turns 50 --model claude-haiku-4-5-20251001 --allowedTools 'Read,Glob,Grep,Agent,Bash(gh pr comment:*),Bash(gh pr diff:*),Bash(gh pr view:*),Bash(gh pr list:*),Bash(gh issue view:*),Bash(gh issue list:*),Bash(gh search:*),Bash(git blame:*),Bash(git log:*),Bash(git diff:*)'"
prompt: | prompt: |
Code review this pull request. Follow these steps precisely: Code review this pull request. Follow these steps precisely:
+6 -6
View File
@@ -6,11 +6,11 @@
# What it does: # What it does:
# - Runs unit and integration tests with coverage instrumentation # - Runs unit and integration tests with coverage instrumentation
# - Runs E2E tests with coverage instrumentation # - Runs E2E tests with coverage instrumentation
# - Uploads coverage reports to Codecov (https://codecov.io/gh/nearai/ironclaw) # - Uploads coverage reports to Codecov (https://codecov.io/gh/nearai/optimclaw)
# #
# Viewing coverage reports: # Viewing coverage reports:
# - PRs automatically get coverage comments showing changes in coverage # - PRs automatically get coverage comments showing changes in coverage
# - Visit https://codecov.io/gh/nearai/ironclaw for detailed coverage reports # - Visit https://codecov.io/gh/nearai/optimclaw for detailed coverage reports
# - Coverage reports are generated for three configurations: # - Coverage reports are generated for three configurations:
# 1. all-features: Full feature set # 1. all-features: Full feature set
# 2. default: Default features # 2. default: Default features
@@ -58,7 +58,7 @@ jobs:
env: env:
POSTGRES_USER: postgres POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres POSTGRES_PASSWORD: postgres
POSTGRES_DB: ironclaw_test POSTGRES_DB: optimclaw_test
ports: ports:
- 5432:5432 - 5432:5432
options: >- options: >-
@@ -103,11 +103,11 @@ jobs:
PGHOST: localhost PGHOST: localhost
PGUSER: postgres PGUSER: postgres
PGPASSWORD: postgres PGPASSWORD: postgres
PGDATABASE: ironclaw_test PGDATABASE: optimclaw_test
- name: Set DATABASE_URL for postgres configs - name: Set DATABASE_URL for postgres configs
if: matrix.has_postgres if: matrix.has_postgres
run: echo "DATABASE_URL=postgres://postgres:postgres@localhost/ironclaw_test" >> "$GITHUB_ENV" run: echo "DATABASE_URL=postgres://postgres:postgres@localhost/optimclaw_test" >> "$GITHUB_ENV"
- name: Generate coverage - name: Generate coverage
run: cargo llvm-cov ${{ matrix.flags }} --workspace --lcov --output-path lcov.info run: cargo llvm-cov ${{ matrix.flags }} --workspace --lcov --output-path lcov.info
@@ -176,7 +176,7 @@ jobs:
run: | run: |
pytest tests/e2e/ -v --timeout=120 pytest tests/e2e/ -v --timeout=120
env: env:
RUST_LOG: ironclaw=info RUST_LOG: optimclaw=info
RUST_BACKTRACE: "1" RUST_BACKTRACE: "1"
- name: Verify profraw files exist - name: Verify profraw files exist
+5 -5
View File
@@ -14,7 +14,7 @@ on:
jobs: jobs:
# ── Step 1: compile once ────────────────────────────────────────────────── # ── Step 1: compile once ──────────────────────────────────────────────────
build: build:
name: Build ironclaw (libsql) name: Build optimclaw (libsql)
runs-on: ubuntu-latest runs-on: ubuntu-latest
timeout-minutes: 30 timeout-minutes: 30
steps: steps:
@@ -35,8 +35,8 @@ jobs:
- name: Upload binary - name: Upload binary
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
with: with:
name: ironclaw-e2e-binary name: optimclaw-e2e-binary
path: target/debug/ironclaw path: target/debug/optimclaw
retention-days: 1 retention-days: 1
# ── Step 2: run test slices in parallel ─────────────────────────────────── # ── Step 2: run test slices in parallel ───────────────────────────────────
@@ -63,11 +63,11 @@ jobs:
- name: Download binary - name: Download binary
uses: actions/download-artifact@v4 uses: actions/download-artifact@v4
with: with:
name: ironclaw-e2e-binary name: optimclaw-e2e-binary
path: target/debug/ path: target/debug/
- name: Make binary executable - name: Make binary executable
run: chmod +x target/debug/ironclaw run: chmod +x target/debug/optimclaw
- uses: actions/setup-python@v5 - uses: actions/setup-python@v5
with: with:
+1 -1
View File
@@ -56,7 +56,7 @@ jobs:
"src/agent/self_repair.rs" "src/agent/self_repair.rs"
"src/agent/agentic_loop.rs" "src/agent/agentic_loop.rs"
"src/tools/execute.rs" "src/tools/execute.rs"
"crates/ironclaw_safety/src/" "crates/optimclaw_safety/src/"
) )
for pattern in "${HIGH_RISK_PATTERNS[@]}"; do for pattern in "${HIGH_RISK_PATTERNS[@]}"; do
+2 -2
View File
@@ -166,7 +166,7 @@ jobs:
continue continue
fi fi
name=$(echo "$filename" | sed "s/^${kind}-//" | sed 's/-[0-9].*-wasm32-wasip2\.tar\.gz$//') name=$(echo "$filename" | sed "s/^${kind}-//" | sed 's/-[0-9].*-wasm32-wasip2\.tar\.gz$//')
url="https://github.com/nearai/ironclaw/releases/download/${RELEASE_TAG}/${filename}" url="https://github.com/nearai/optimclaw/releases/download/${RELEASE_TAG}/${filename}"
manifest="registry/${kind}s/${name}.json" manifest="registry/${kind}s/${name}.json"
if [ -f "$manifest" ]; then if [ -f "$manifest" ]; then
@@ -496,7 +496,7 @@ jobs:
continue continue
fi fi
name=$(echo "$filename" | sed "s/^${kind}-//" | sed 's/-[0-9].*-wasm32-wasip2\.tar\.gz$//') name=$(echo "$filename" | sed "s/^${kind}-//" | sed 's/-[0-9].*-wasm32-wasip2\.tar\.gz$//')
url="https://github.com/nearai/ironclaw/releases/download/${RELEASE_TAG}/${filename}" url="https://github.com/nearai/optimclaw/releases/download/${RELEASE_TAG}/${filename}"
manifest="registry/${kind}s/${name}.json" manifest="registry/${kind}s/${name}.json"
if [ -f "$manifest" ]; then if [ -f "$manifest" ]; then
+1 -1
View File
@@ -165,7 +165,7 @@ jobs:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v6 uses: actions/checkout@v6
- name: Build Docker image - name: Build Docker image
run: docker build -t ironclaw-test:ci . run: docker build -t optimclaw-test:ci .
version-check: version-check:
name: Version Bump Check name: Version Bump Check
+520 -520
View File
File diff suppressed because it is too large Load Diff
+12 -12
View File
@@ -1,6 +1,6 @@
# IronClaw Development Guide # OptimClaw Development Guide
**IronClaw** is a secure personal AI assistant — user-first security, self-expanding tools, defense in depth, multi-channel access with proactive background execution. **OptimClaw** is a secure personal AI assistant — user-first security, self-expanding tools, defense in depth, multi-channel access with proactive background execution.
## Build & Test ## Build & Test
@@ -9,7 +9,7 @@ cargo fmt # format
cargo clippy --all --benches --tests --examples --all-features # lint (zero warnings) cargo clippy --all --benches --tests --examples --all-features # lint (zero warnings)
cargo test # unit tests cargo test # unit tests
cargo test --features integration # + PostgreSQL tests cargo test --features integration # + PostgreSQL tests
RUST_LOG=ironclaw=debug cargo run # run with logging RUST_LOG=optimclaw=debug cargo run # run with logging
``` ```
E2E tests: see `tests/e2e/CLAUDE.md`. E2E tests: see `tests/e2e/CLAUDE.md`.
@@ -35,20 +35,20 @@ All I/O is async with tokio. Use `Arc<T>` for shared state, `RwLock` for concurr
## Extracted Crates ## Extracted Crates
Safety logic lives in `crates/ironclaw_safety/`. The `src/safety/mod.rs` shim re-exports everything for backward compatibility, but **new code should import from `ironclaw_safety` directly** (e.g. `use ironclaw_safety::SafetyLayer`). When touching a file that still uses `crate::safety::*`, migrate its imports to `ironclaw_safety::*`. Safety logic lives in `crates/optimclaw_safety/`. The `src/safety/mod.rs` shim re-exports everything for backward compatibility, but **new code should import from `optimclaw_safety` directly** (e.g. `use optimclaw_safety::SafetyLayer`). When touching a file that still uses `crate::safety::*`, migrate its imports to `optimclaw_safety::*`.
## Project Structure ## Project Structure
``` ```
crates/ crates/
└── ironclaw_safety/ # Extracted: prompt injection, validation, leak detection, policy └── optimclaw_safety/ # Extracted: prompt injection, validation, leak detection, policy
src/ src/
├── lib.rs # Library root, module declarations ├── lib.rs # Library root, module declarations
├── main.rs # Entry point, CLI args, startup ├── main.rs # Entry point, CLI args, startup
├── app.rs # App startup orchestration (channel wiring, DB init) ├── app.rs # App startup orchestration (channel wiring, DB init)
├── bootstrap.rs # Base directory resolution (~/.ironclaw), early .env loading ├── bootstrap.rs # Base directory resolution (~/.optimclaw), early .env loading
├── settings.rs # User settings persistence (~/.ironclaw/settings.json) ├── settings.rs # User settings persistence (~/.optimclaw/settings.json)
├── service.rs # OS service management (launchd/systemd daemon install) ├── service.rs # OS service management (launchd/systemd daemon install)
├── tracing_fmt.rs # Custom tracing formatter ├── tracing_fmt.rs # Custom tracing formatter
├── util.rs # Shared utilities ├── util.rs # Shared utilities
@@ -111,7 +111,7 @@ src/
│ ├── claude_bridge.rs # Claude Code bridge (spawns claude CLI) │ ├── claude_bridge.rs # Claude Code bridge (spawns claude CLI)
│ └── proxy_llm.rs # LlmProvider that proxies through orchestrator │ └── proxy_llm.rs # LlmProvider that proxies through orchestrator
├── safety/ # Re-export shim for crates/ironclaw_safety (see Extracted Crates) ├── safety/ # Re-export shim for crates/optimclaw_safety (see Extracted Crates)
├── llm/ # Multi-provider LLM integration — see src/llm/CLAUDE.md ├── llm/ # Multi-provider LLM integration — see src/llm/CLAUDE.md
@@ -206,7 +206,7 @@ Pending -> InProgress -> Completed -> Submitted -> Accepted
SKILL.md files extend the agent's prompt with domain-specific instructions. See `.claude/rules/skills.md` for full details. SKILL.md files extend the agent's prompt with domain-specific instructions. See `.claude/rules/skills.md` for full details.
- **Trust model**: Trusted (user-placed in `~/.ironclaw/skills/` or workspace `skills/`, full tool access) vs Installed (registry, read-only tools) - **Trust model**: Trusted (user-placed in `~/.optimclaw/skills/` or workspace `skills/`, full tool access) vs Installed (registry, read-only tools)
- **Selection pipeline**: gating (check bin/env/config requirements) -> scoring (keywords/patterns/tags) -> budget (fit within `SKILLS_MAX_TOKENS`) -> attenuation (trust-based tool ceiling) - **Selection pipeline**: gating (check bin/env/config requirements) -> scoring (keywords/patterns/tags) -> budget (fit within `SKILLS_MAX_TOKENS`) -> attenuation (trust-based tool ceiling)
- **Skill tools**: `skill_list`, `skill_search`, `skill_install`, `skill_remove` - **Skill tools**: `skill_list`, `skill_search`, `skill_install`, `skill_remove`
@@ -228,9 +228,9 @@ Persistent memory with hybrid search (FTS + vector via RRF). Four tools: `memory
## Debugging ## Debugging
```bash ```bash
RUST_LOG=ironclaw=trace cargo run # verbose RUST_LOG=optimclaw=trace cargo run # verbose
RUST_LOG=ironclaw::agent=debug cargo run # agent module only RUST_LOG=optimclaw::agent=debug cargo run # agent module only
RUST_LOG=ironclaw=debug,tower_http=debug cargo run # + HTTP request logging RUST_LOG=optimclaw=debug,tower_http=debug cargo run # + HTTP request logging
``` ```
## Current Limitations ## Current Limitations
+3 -3
View File
@@ -3,8 +3,8 @@
## Getting Started ## Getting Started
```bash ```bash
git clone https://github.com/nearai/ironclaw.git git clone https://github.com/nearai/optimclaw.git
cd ironclaw cd optimclaw
./scripts/dev-setup.sh ./scripts/dev-setup.sh
``` ```
@@ -53,7 +53,7 @@ Select the appropriate track in the PR template based on what your changes touch
## Database Changes ## Database Changes
IronClaw uses dual-backend persistence (PostgreSQL + libSQL). All new persistence features must support both backends. See `src/db/CLAUDE.md`. OptimClaw uses dual-backend persistence (PostgreSQL + libSQL). All new persistence features must support both backends. See `src/db/CLAUDE.md`.
## Adding Dependencies ## Adding Dependencies
+2 -2
View File
@@ -1,6 +1,6 @@
# IronClaw Coverage Plan: 63.3% to 95% # OptimClaw Coverage Plan: 63.3% to 95%
> Generated 2025-03-06 from [Codecov](https://app.codecov.io/gh/nearai/ironclaw/tree/main/src) > Generated 2025-03-06 from [Codecov](https://app.codecov.io/gh/nearai/optimclaw/tree/main/src)
## Current State ## Current State
+7 -7
View File
@@ -1,5 +1,5 @@
[workspace] [workspace]
members = [".", "crates/ironclaw_common", "crates/ironclaw_safety"] members = [".", "crates/optimclaw_common", "crates/optimclaw_safety"]
exclude = [ exclude = [
"channels-src/discord", "channels-src/discord",
"channels-src/telegram", "channels-src/telegram",
@@ -15,19 +15,19 @@ exclude = [
"tools-src/slack", "tools-src/slack",
"tools-src/telegram", "tools-src/telegram",
"fuzz", "fuzz",
"crates/ironclaw_safety/fuzz", "crates/optimclaw_safety/fuzz",
] ]
[package] [package]
name = "ironclaw" name = "optimclaw"
version = "0.22.0" version = "0.22.0"
edition = "2024" edition = "2024"
rust-version = "1.92" rust-version = "1.92"
description = "Secure personal AI assistant that protects your data and expands its capabilities on the fly" description = "Secure personal AI assistant that protects your data and expands its capabilities on the fly"
authors = ["NEAR AI <[email protected]>"] authors = ["NEAR AI <[email protected]>"]
license = "MIT OR Apache-2.0" license = "MIT OR Apache-2.0"
homepage = "https://github.com/nearai/ironclaw" homepage = "https://github.com/nearai/optimclaw"
repository = "https://github.com/nearai/ironclaw" repository = "https://github.com/nearai/optimclaw"
[package.metadata.wix] [package.metadata.wix]
upgrade-guid = "D0156E61-BA37-451E-8AB9-1A2ECCCFA48F" upgrade-guid = "D0156E61-BA37-451E-8AB9-1A2ECCCFA48F"
@@ -102,10 +102,10 @@ tower-http = { version = "0.6", features = ["trace", "cors", "set-header", "catc
cron = "0.13" cron = "0.13"
# Shared types # Shared types
ironclaw_common = { path = "crates/ironclaw_common", version = "0.1.0" } optimclaw_common = { path = "crates/optimclaw_common", version = "0.1.0" }
# Safety/sanitization # Safety/sanitization
ironclaw_safety = { path = "crates/ironclaw_safety", version = "0.2.0" } optimclaw_safety = { path = "crates/optimclaw_safety", version = "0.2.0" }
regex = "1" regex = "1"
aho-corasick = "1" aho-corasick = "1"
+37 -37
View File
@@ -1,6 +1,6 @@
# IronClaw ↔ OpenClaw Feature Parity Matrix # OptimClaw ↔ OpenClaw Feature Parity Matrix
This document tracks feature parity between IronClaw (Rust implementation) and OpenClaw (TypeScript reference implementation). Use this to coordinate work across developers. This document tracks feature parity between OptimClaw (Rust implementation) and OpenClaw (TypeScript reference implementation). Use this to coordinate work across developers.
**Legend:** **Legend:**
@@ -17,7 +17,7 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
## 1. Architecture ## 1. Architecture
| Feature | OpenClaw | IronClaw | Notes | | Feature | OpenClaw | OptimClaw | Notes |
|---------|----------|----------|-------| |---------|----------|----------|-------|
| Hub-and-spoke architecture | ✅ | ✅ | Web gateway as central hub | | Hub-and-spoke architecture | ✅ | ✅ | Web gateway as central hub |
| WebSocket control plane | ✅ | ✅ | Gateway with WebSocket + SSE | | WebSocket control plane | ✅ | ✅ | Gateway with WebSocket + SSE |
@@ -32,7 +32,7 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
## 2. Gateway System ## 2. Gateway System
| Feature | OpenClaw | IronClaw | Notes | | Feature | OpenClaw | OptimClaw | Notes |
|---------|----------|----------|-------| |---------|----------|----------|-------|
| Gateway control plane | ✅ | ✅ | Web gateway with 40+ API endpoints | | Gateway control plane | ✅ | ✅ | Web gateway with 40+ API endpoints |
| HTTP endpoints for Control UI | ✅ | ✅ | Web dashboard with chat, memory, jobs, logs, extensions | | HTTP endpoints for Control UI | ✅ | ✅ | Web dashboard with chat, memory, jobs, logs, extensions |
@@ -62,12 +62,12 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
## 3. Messaging Channels ## 3. Messaging Channels
| Channel | OpenClaw | IronClaw | Priority | Notes | | Channel | OpenClaw | OptimClaw | Priority | Notes |
|---------|----------|----------|----------|-------| |---------|----------|----------|----------|-------|
| CLI/TUI | ✅ | ✅ | - | Ratatui-based TUI | | CLI/TUI | ✅ | ✅ | - | Ratatui-based TUI |
| HTTP webhook | ✅ | ✅ | - | axum with secret validation | | HTTP webhook | ✅ | ✅ | - | axum with secret validation |
| REPL (simple) | ✅ | ✅ | - | For testing | | REPL (simple) | ✅ | ✅ | - | For testing |
| WASM channels | ❌ | ✅ | - | IronClaw innovation; host resolves owner scope vs sender identity | | WASM channels | ❌ | ✅ | - | OptimClaw innovation; host resolves owner scope vs sender identity |
| WhatsApp | ✅ | ❌ | P1 | Baileys (Web), same-phone mode with echo detection | | WhatsApp | ✅ | ❌ | P1 | Baileys (Web), same-phone mode with echo detection |
| Telegram | ✅ | ✅ | - | WASM channel(MTProto), DM pairing, caption, /start, bot_username, DM topics, setup-time owner auto-verification, owner-scoped persistence | | Telegram | ✅ | ✅ | - | WASM channel(MTProto), DM pairing, caption, /start, bot_username, DM topics, setup-time owner auto-verification, owner-scoped persistence |
| Discord | ✅ | ❌ | P2 | discord.js, thread parent binding inheritance | | Discord | ✅ | ❌ | P2 | discord.js, thread parent binding inheritance |
@@ -88,7 +88,7 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
### Telegram-Specific Features (since Feb 2025) ### Telegram-Specific Features (since Feb 2025)
| Feature | OpenClaw | IronClaw | Notes | | Feature | OpenClaw | OptimClaw | Notes |
|---------|----------|----------|-------| |---------|----------|----------|-------|
| Forum topic creation | ✅ | ❌ | Create topics in forum groups | | Forum topic creation | ✅ | ❌ | Create topics in forum groups |
| channel_post support | ✅ | ❌ | Bot-to-bot communication | | channel_post support | ✅ | ❌ | Bot-to-bot communication |
@@ -100,7 +100,7 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
### Discord-Specific Features (since Feb 2025) ### Discord-Specific Features (since Feb 2025)
| Feature | OpenClaw | IronClaw | Notes | | Feature | OpenClaw | OptimClaw | Notes |
|---------|----------|----------|-------| |---------|----------|----------|-------|
| Forwarded attachment downloads | ✅ | ❌ | Fetch media from forwarded messages | | Forwarded attachment downloads | ✅ | ❌ | Fetch media from forwarded messages |
| Faster reaction state machine | ✅ | ❌ | Watchdog + debounce | | Faster reaction state machine | ✅ | ❌ | Watchdog + debounce |
@@ -108,7 +108,7 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
### Slack-Specific Features (since Feb 2025) ### Slack-Specific Features (since Feb 2025)
| Feature | OpenClaw | IronClaw | Notes | | Feature | OpenClaw | OptimClaw | Notes |
|---------|----------|----------|-------| |---------|----------|----------|-------|
| Streaming draft replies | ✅ | ❌ | Partial replies via draft message updates | | Streaming draft replies | ✅ | ❌ | Partial replies via draft message updates |
| Configurable stream modes | ✅ | ❌ | Per-channel stream behavior | | Configurable stream modes | ✅ | ❌ | Per-channel stream behavior |
@@ -117,23 +117,23 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
### Mattermost-Specific Features (since Mar 2026) ### Mattermost-Specific Features (since Mar 2026)
| Feature | OpenClaw | IronClaw | Notes | | Feature | OpenClaw | OptimClaw | Notes |
|---------|----------|----------|-------| |---------|----------|----------|-------|
| Interactive buttons | ✅ | ❌ | Clickable message buttons with signed callback flow | | Interactive buttons | ✅ | ❌ | Clickable message buttons with signed callback flow |
| Interactive model picker | ✅ | ❌ | In-channel provider/model chooser | | Interactive model picker | ✅ | ❌ | In-channel provider/model chooser |
### Feishu/Lark-Specific Features (since Mar 2026) ### Feishu/Lark-Specific Features (since Mar 2026)
| Feature | OpenClaw | IronClaw | Notes | | Feature | OpenClaw | OptimClaw | Notes |
|---------|----------|----------|-------| |---------|----------|----------|-------|
| Doc/table actions | ✅ | ❌ | `feishu_doc` supports tables, positional insert, color_text, image upload, and file upload | | Doc/table actions | ✅ | ❌ | `feishu_doc` supports tables, positional insert, color_text, image upload, and file upload |
| Rich-text embedded media extraction | ✅ | ❌ | Pull video/media attachments from post messages | | Rich-text embedded media extraction | ✅ | ❌ | Pull video/media attachments from post messages |
### Channel Features ### Channel Features
| Feature | OpenClaw | IronClaw | Notes | | Feature | OpenClaw | OptimClaw | Notes |
|---------|----------|----------|-------| |---------|----------|----------|-------|
| DM pairing codes | ✅ | ✅ | `ironclaw pairing list/approve`, host APIs | | DM pairing codes | ✅ | ✅ | `optimclaw pairing list/approve`, host APIs |
| Allowlist/blocklist | ✅ | 🚧 | `allow_from` + pairing store + hardened command/group allowlists | | Allowlist/blocklist | ✅ | 🚧 | `allow_from` + pairing store + hardened command/group allowlists |
| Self-message bypass | ✅ | ❌ | Own messages skip pairing | | Self-message bypass | ✅ | ❌ | Own messages skip pairing |
| Mention-based activation | ✅ | ✅ | bot_username + respond_to_all_group_messages | | Mention-based activation | ✅ | ✅ | bot_username + respond_to_all_group_messages |
@@ -151,7 +151,7 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
## 4. CLI Commands ## 4. CLI Commands
| Command | OpenClaw | IronClaw | Priority | Notes | | Command | OpenClaw | OptimClaw | Priority | Notes |
|---------|----------|----------|----------|-------| |---------|----------|----------|----------|-------|
| `run` (agent) | ✅ | ✅ | - | Default command | | `run` (agent) | ✅ | ✅ | - | Default command |
| `tool install/list/remove` | ✅ | ✅ | - | WASM tools | | `tool install/list/remove` | ✅ | ✅ | - | WASM tools |
@@ -189,9 +189,9 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
## 5. Agent System ## 5. Agent System
| Feature | OpenClaw | IronClaw | Notes | | Feature | OpenClaw | OptimClaw | Notes |
|---------|----------|----------|-------| |---------|----------|----------|-------|
| Pi agent runtime | ✅ | | IronClaw uses custom runtime | | Pi agent runtime | ✅ | | OptimClaw uses custom runtime |
| RPC-based execution | ✅ | ✅ | Orchestrator/worker pattern | | RPC-based execution | ✅ | ✅ | Orchestrator/worker pattern |
| Multi-provider failover | ✅ | ✅ | `FailoverProvider` tries providers sequentially on retryable errors | | Multi-provider failover | ✅ | ✅ | `FailoverProvider` tries providers sequentially on retryable errors |
| Per-sender sessions | ✅ | ✅ | | | Per-sender sessions | ✅ | ✅ | |
@@ -232,7 +232,7 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
## 6. Model & Provider Support ## 6. Model & Provider Support
| Provider | OpenClaw | IronClaw | Priority | Notes | | Provider | OpenClaw | OptimClaw | Priority | Notes |
|----------|----------|----------|----------|-------| |----------|----------|----------|----------|-------|
| NEAR AI | ✅ | ✅ | - | Primary provider | | NEAR AI | ✅ | ✅ | - | Primary provider |
| Anthropic (Claude) | ✅ | 🚧 | - | Via NEAR AI proxy; Opus 4.5, Sonnet 4, Sonnet 4.6, adaptive thinking default | | Anthropic (Claude) | ✅ | 🚧 | - | Via NEAR AI proxy; Opus 4.5, Sonnet 4, Sonnet 4.6, adaptive thinking default |
@@ -245,7 +245,7 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
| Cloudflare Workers AI | ✅ | ✅ | P3 | Via `cloudflare` adapter | | Cloudflare Workers AI | ✅ | ✅ | P3 | Via `cloudflare` adapter |
| NVIDIA API | ✅ | ✅ | P3 | Via `nvidia` adapter and `providers.json` | | NVIDIA API | ✅ | ✅ | P3 | Via `nvidia` adapter and `providers.json` |
| OpenRouter | ✅ | ✅ | - | Via OpenAI-compatible provider (RigAdapter) | | OpenRouter | ✅ | ✅ | - | Via OpenAI-compatible provider (RigAdapter) |
| Tinfoil | ❌ | ✅ | - | Private inference provider (IronClaw-only) | | Tinfoil | ❌ | ✅ | - | Private inference provider (OptimClaw-only) |
| OpenAI-compatible | ❌ | ✅ | - | Generic OpenAI-compatible endpoint (RigAdapter) | | OpenAI-compatible | ❌ | ✅ | - | Generic OpenAI-compatible endpoint (RigAdapter) |
| GitHub Copilot | ✅ | ✅ | - | Dedicated provider with OAuth token exchange (`GithubCopilotProvider`) | | GitHub Copilot | ✅ | ✅ | - | Dedicated provider with OAuth token exchange (`GithubCopilotProvider`) |
| Ollama (local) | ✅ | ✅ | - | via `rig::providers::ollama` (full support) | | Ollama (local) | ✅ | ✅ | - | via `rig::providers::ollama` (full support) |
@@ -257,7 +257,7 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
### Model Features ### Model Features
| Feature | OpenClaw | IronClaw | Notes | | Feature | OpenClaw | OptimClaw | Notes |
|---------|----------|----------|-------| |---------|----------|----------|-------|
| Auto-discovery | ✅ | ❌ | | | Auto-discovery | ✅ | ❌ | |
| Failover chains | ✅ | ✅ | `FailoverProvider` with configurable `fallback_model` | | Failover chains | ✅ | ✅ | `FailoverProvider` with configurable `fallback_model` |
@@ -273,7 +273,7 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
## 7. Media Handling ## 7. Media Handling
| Feature | OpenClaw | IronClaw | Priority | Notes | | Feature | OpenClaw | OptimClaw | Priority | Notes |
|---------|----------|----------|----------|-------| |---------|----------|----------|----------|-------|
| Image processing (Sharp) | ✅ | ❌ | P2 | Resize, format convert | | Image processing (Sharp) | ✅ | ❌ | P2 | Resize, format convert |
| Configurable image resize dims | ✅ | ❌ | P2 | Per-agent dimension config | | Configurable image resize dims | ✅ | ❌ | P2 | Per-agent dimension config |
@@ -296,12 +296,12 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
## 8. Plugin & Extension System ## 8. Plugin & Extension System
| Feature | OpenClaw | IronClaw | Notes | | Feature | OpenClaw | OptimClaw | Notes |
|---------|----------|----------|-------| |---------|----------|----------|-------|
| Dynamic loading | ✅ | ✅ | WASM modules | | Dynamic loading | ✅ | ✅ | WASM modules |
| Manifest validation | ✅ | ✅ | WASM metadata | | Manifest validation | ✅ | ✅ | WASM metadata |
| HTTP path registration | ✅ | ❌ | Plugin routes | | HTTP path registration | ✅ | ❌ | Plugin routes |
| Workspace-relative install | ✅ | ✅ | ~/.ironclaw/tools/ | | Workspace-relative install | ✅ | ✅ | ~/.optimclaw/tools/ |
| Channel plugins | ✅ | ✅ | WASM channels | | Channel plugins | ✅ | ✅ | WASM channels |
| Auth plugins | ✅ | ❌ | | | Auth plugins | ✅ | ❌ | |
| Memory plugins | ✅ | ❌ | Custom backends + selectable memory slot | | Memory plugins | ✅ | ❌ | Custom backends + selectable memory slot |
@@ -321,7 +321,7 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
## 9. Configuration System ## 9. Configuration System
| Feature | OpenClaw | IronClaw | Notes | | Feature | OpenClaw | OptimClaw | Notes |
|---------|----------|----------|-------| |---------|----------|----------|-------|
| Primary config file | ✅ `~/.openclaw/openclaw.json` | ✅ `.env` | Different formats | | Primary config file | ✅ `~/.openclaw/openclaw.json` | ✅ `.env` | Different formats |
| JSON5 support | ✅ | ❌ | Comments, trailing commas | | JSON5 support | ✅ | ❌ | Comments, trailing commas |
@@ -330,7 +330,7 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
| Config validation/schema | ✅ | ✅ | Type-safe Config struct + `openclaw config validate` | | Config validation/schema | ✅ | ✅ | Type-safe Config struct + `openclaw config validate` |
| Hot-reload | ✅ | ❌ | | | Hot-reload | ✅ | ❌ | |
| Legacy migration | ✅ | | | | Legacy migration | ✅ | | |
| State directory | ✅ `~/.openclaw-state/` | ✅ `~/.ironclaw/` | | | State directory | ✅ `~/.openclaw-state/` | ✅ `~/.optimclaw/` | |
| Credentials directory | ✅ | ✅ | Session files | | Credentials directory | ✅ | ✅ | Session files |
| Full model compat fields in schema | ✅ | ❌ | pi-ai model compat exposed in config | | Full model compat fields in schema | ✅ | ❌ | pi-ai model compat exposed in config |
@@ -340,7 +340,7 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
## 10. Memory & Knowledge System ## 10. Memory & Knowledge System
| Feature | OpenClaw | IronClaw | Notes | | Feature | OpenClaw | OptimClaw | Notes |
|---------|----------|----------|-------| |---------|----------|----------|-------|
| Vector memory | ✅ | ✅ | pgvector | | Vector memory | ✅ | ✅ | pgvector |
| Session-based memory | ✅ | ✅ | | | Session-based memory | ✅ | ✅ | |
@@ -351,7 +351,7 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
| OpenAI embeddings | ✅ | ✅ | | | OpenAI embeddings | ✅ | ✅ | |
| Gemini embeddings | ✅ | ❌ | | | Gemini embeddings | ✅ | ❌ | |
| Local embeddings | ✅ | ❌ | | | Local embeddings | ✅ | ❌ | |
| SQLite-vec backend | ✅ | ❌ | IronClaw uses PostgreSQL | | SQLite-vec backend | ✅ | ❌ | OptimClaw uses PostgreSQL |
| LanceDB backend | ✅ | ❌ | Configurable auto-capture max length | | LanceDB backend | ✅ | ❌ | Configurable auto-capture max length |
| QMD backend | ✅ | ❌ | | | QMD backend | ✅ | ❌ | |
| Atomic reindexing | ✅ | ✅ | | | Atomic reindexing | ✅ | ✅ | |
@@ -369,7 +369,7 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
## 11. Mobile Apps ## 11. Mobile Apps
| Feature | OpenClaw | IronClaw | Priority | Notes | | Feature | OpenClaw | OptimClaw | Priority | Notes |
|---------|----------|----------|----------|-------| |---------|----------|----------|----------|-------|
| iOS app (SwiftUI) | ✅ | 🚫 | - | Out of scope initially | | iOS app (SwiftUI) | ✅ | 🚫 | - | Out of scope initially |
| Android app (Kotlin) | ✅ | 🚫 | - | Out of scope initially | | Android app (Kotlin) | ✅ | 🚫 | - | Out of scope initially |
@@ -390,7 +390,7 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
## 12. macOS App ## 12. macOS App
| Feature | OpenClaw | IronClaw | Priority | Notes | | Feature | OpenClaw | OptimClaw | Priority | Notes |
|---------|----------|----------|----------|-------| |---------|----------|----------|----------|-------|
| SwiftUI native app | ✅ | 🚫 | - | Out of scope | | SwiftUI native app | ✅ | 🚫 | - | Out of scope |
| Menu bar presence | ✅ | 🚫 | - | Animated menubar icon | | Menu bar presence | ✅ | 🚫 | - | Animated menubar icon |
@@ -411,7 +411,7 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
## 13. Web Interface ## 13. Web Interface
| Feature | OpenClaw | IronClaw | Priority | Notes | | Feature | OpenClaw | OptimClaw | Priority | Notes |
|---------|----------|----------|----------|-------| |---------|----------|----------|----------|-------|
| Control UI Dashboard | ✅ | ✅ | - | Web gateway with chat, memory, jobs, logs, extensions | | Control UI Dashboard | ✅ | ✅ | - | Web gateway with chat, memory, jobs, logs, extensions |
| Channel status view | ✅ | 🚧 | P2 | Gateway status widget, full channel view pending | | Channel status view | ✅ | 🚧 | P2 | Gateway status widget, full channel view pending |
@@ -431,7 +431,7 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
## 14. Automation ## 14. Automation
| Feature | OpenClaw | IronClaw | Priority | Notes | | Feature | OpenClaw | OptimClaw | Priority | Notes |
|---------|----------|----------|----------|-------| |---------|----------|----------|----------|-------|
| Cron jobs | ✅ | ✅ | - | Routines with cron trigger | | Cron jobs | ✅ | ✅ | - | Routines with cron trigger |
| Per-job model fallback override | ✅ | ❌ | P2 | `payload.fallbacks` overrides agent-level fallbacks | | Per-job model fallback override | ✅ | ❌ | P2 | `payload.fallbacks` overrides agent-level fallbacks |
@@ -465,14 +465,14 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
## 15. Security Features ## 15. Security Features
| Feature | OpenClaw | IronClaw | Notes | | Feature | OpenClaw | OptimClaw | Notes |
|---------|----------|----------|-------| |---------|----------|----------|-------|
| Gateway token auth | ✅ | ✅ | Bearer token auth on web gateway | | Gateway token auth | ✅ | ✅ | Bearer token auth on web gateway |
| Device pairing | ✅ | ❌ | | | Device pairing | ✅ | ❌ | |
| Tailscale identity | ✅ | ❌ | | | Tailscale identity | ✅ | ❌ | |
| Trusted-proxy auth | ✅ | ❌ | Header-based reverse proxy auth | | Trusted-proxy auth | ✅ | ❌ | Header-based reverse proxy auth |
| OAuth flows | ✅ | 🚧 | NEAR AI OAuth + Gemini OAuth (PKCE, S256) + hosted extension/MCP OAuth broker; external auth-proxy rollout still pending | | OAuth flows | ✅ | 🚧 | NEAR AI OAuth + Gemini OAuth (PKCE, S256) + hosted extension/MCP OAuth broker; external auth-proxy rollout still pending |
| DM pairing verification | ✅ | ✅ | ironclaw pairing approve, host APIs | | DM pairing verification | ✅ | ✅ | optimclaw pairing approve, host APIs |
| Allowlist/blocklist | ✅ | 🚧 | allow_from + pairing store | | Allowlist/blocklist | ✅ | 🚧 | allow_from + pairing store |
| Per-group tool policies | ✅ | ❌ | | | Per-group tool policies | ✅ | ❌ | |
| Exec approvals | ✅ | ✅ | TUI overlay | | Exec approvals | ✅ | ✅ | TUI overlay |
@@ -483,7 +483,7 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
| Loopback-first | ✅ | 🚧 | HTTP binds 0.0.0.0 | | Loopback-first | ✅ | 🚧 | HTTP binds 0.0.0.0 |
| Docker sandbox | ✅ | ✅ | Orchestrator/worker containers | | Docker sandbox | ✅ | ✅ | Orchestrator/worker containers |
| Podman support | ✅ | ❌ | Alternative to Docker | | Podman support | ✅ | ❌ | Alternative to Docker |
| WASM sandbox | ❌ | ✅ | IronClaw innovation | | WASM sandbox | ❌ | ✅ | OptimClaw innovation |
| Sandbox env sanitization | ✅ | 🚧 | Shell tool scrubs env vars (secret detection); docker container env sanitization partial | | Sandbox env sanitization | ✅ | 🚧 | Shell tool scrubs env vars (secret detection); docker container env sanitization partial |
| Tool policies | ✅ | ✅ | | | Tool policies | ✅ | ✅ | |
| Elevated mode | ✅ | ❌ | | | Elevated mode | ✅ | ❌ | |
@@ -505,7 +505,7 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
## 16. Development & Build System ## 16. Development & Build System
| Feature | OpenClaw | IronClaw | Notes | | Feature | OpenClaw | OptimClaw | Notes |
|---------|----------|----------|-------| |---------|----------|----------|-------|
| Primary language | TypeScript | Rust | Different ecosystems | | Primary language | TypeScript | Rust | Different ecosystems |
| Build tool | tsdown | cargo | | | Build tool | tsdown | cargo | |
@@ -531,7 +531,7 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
- ✅ TUI channel with approval overlays - ✅ TUI channel with approval overlays
- ✅ HTTP webhook channel - ✅ HTTP webhook channel
- ✅ DM pairing (ironclaw pairing list/approve, host APIs) - ✅ DM pairing (optimclaw pairing list/approve, host APIs)
- ✅ WASM tool sandbox - ✅ WASM tool sandbox
- ✅ Workspace/memory with hybrid search + embeddings batching - ✅ Workspace/memory with hybrid search + embeddings batching
- ✅ Prompt injection defense - ✅ Prompt injection defense
@@ -605,7 +605,7 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
## Deviations from OpenClaw ## Deviations from OpenClaw
IronClaw intentionally differs from OpenClaw in these ways: OptimClaw intentionally differs from OpenClaw in these ways:
1. **Rust vs TypeScript**: Native performance, memory safety, single binary distribution 1. **Rust vs TypeScript**: Native performance, memory safety, single binary distribution
2. **WASM sandbox vs Docker**: Lighter weight, faster startup, capability-based security 2. **WASM sandbox vs Docker**: Lighter weight, faster startup, capability-based security
@@ -613,7 +613,7 @@ IronClaw intentionally differs from OpenClaw in these ways:
4. **NEAR AI focus**: Primary provider with session-based auth 4. **NEAR AI focus**: Primary provider with session-based auth
5. **No mobile/desktop apps**: Focus on server-side and CLI initially 5. **No mobile/desktop apps**: Focus on server-side and CLI initially
6. **WASM channels**: Novel extension mechanism not in OpenClaw 6. **WASM channels**: Novel extension mechanism not in OpenClaw
7. **Tinfoil private inference**: IronClaw-only provider for private/encrypted inference 7. **Tinfoil private inference**: OptimClaw-only provider for private/encrypted inference
8. **GitHub WASM tool**: Native GitHub integration as WASM tool 8. **GitHub WASM tool**: Native GitHub integration as WASM tool
9. **Prompt-based skills**: Different approach than OpenClaw capability bundles (trust gating, attenuation) 9. **Prompt-based skills**: Different approach than OpenClaw capability bundles (trust gating, attenuation)
+26 -26
View File
@@ -1,8 +1,8 @@
<p align="center"> <p align="center">
<img src="ironclaw.png?v=2" alt="IronClaw" width="200"/> <img src="optimclaw.png?v=2" alt="OptimClaw" width="200"/>
</p> </p>
<h1 align="center">IronClaw</h1> <h1 align="center">OptimClaw</h1>
<p align="center"> <p align="center">
<strong>あなたの味方になる、安全なパーソナルAIアシスタント</strong> <strong>あなたの味方になる、安全なパーソナルAIアシスタント</strong>
@@ -10,8 +10,8 @@
<p align="center"> <p align="center">
<a href="#license"><img src="https://img.shields.io/badge/license-MIT%20OR%20Apache%202.0-blue.svg" alt="License: MIT OR Apache-2.0" /></a> <a href="#license"><img src="https://img.shields.io/badge/license-MIT%20OR%20Apache%202.0-blue.svg" alt="License: MIT OR Apache-2.0" /></a>
<a href="https://t.me/ironclawAI"><img src="https://img.shields.io/badge/Telegram-%40ironclawAI-26A5E4?style=flat&logo=telegram&logoColor=white" alt="Telegram: @ironclawAI" /></a> <a href="https://t.me/optimclawAI"><img src="https://img.shields.io/badge/Telegram-%40optimclawAI-26A5E4?style=flat&logo=telegram&logoColor=white" alt="Telegram: @optimclawAI" /></a>
<a href="https://www.reddit.com/r/ironclawAI/"><img src="https://img.shields.io/badge/Reddit-r%2FironclawAI-FF4500?style=flat&logo=reddit&logoColor=white" alt="Reddit: r/ironclawAI" /></a> <a href="https://www.reddit.com/r/optimclawAI/"><img src="https://img.shields.io/badge/Reddit-r%2FoptimclawAI-FF4500?style=flat&logo=reddit&logoColor=white" alt="Reddit: r/optimclawAI" /></a>
</p> </p>
<p align="center"> <p align="center">
@@ -34,16 +34,16 @@
## フィロソフィー ## フィロソフィー
IronClawはシンプルな原則に基づいて構築されています:**あなたのAIアシスタントは、あなたのために働くべきであり、あなたに不利益をもたらすべきではありません。** OptimClawはシンプルな原則に基づいて構築されています:**あなたのAIアシスタントは、あなたのために働くべきであり、あなたに不利益をもたらすべきではありません。**
AIシステムがデータの取り扱いについて不透明になり、企業の利益に沿って調整されることが増えている世界で、IronClawは異なるアプローチを取ります: AIシステムがデータの取り扱いについて不透明になり、企業の利益に沿って調整されることが増えている世界で、OptimClawは異なるアプローチを取ります:
- **あなたのデータはあなたのもの** - すべての情報はローカルに保存・暗号化され、あなたの管理下から離れることはありません - **あなたのデータはあなたのもの** - すべての情報はローカルに保存・暗号化され、あなたの管理下から離れることはありません
- **設計段階からの透明性** - オープンソース、監査可能、隠れたテレメトリやデータ収集なし - **設計段階からの透明性** - オープンソース、監査可能、隠れたテレメトリやデータ収集なし
- **自己拡張する能力** - ベンダーのアップデートを待たずに、新しいツールをその場で構築 - **自己拡張する能力** - ベンダーのアップデートを待たずに、新しいツールをその場で構築
- **多層防御** - 複数のセキュリティレイヤーがプロンプトインジェクションやデータ流出から保護 - **多層防御** - 複数のセキュリティレイヤーがプロンプトインジェクションやデータ流出から保護
IronClawは、個人生活にも仕事にも本当に信頼できるAIアシスタントです。 OptimClawは、個人生活にも仕事にも本当に信頼できるAIアシスタントです。
## 機能 ## 機能
@@ -66,7 +66,7 @@ IronClawは、個人生活にも仕事にも本当に信頼できるAIアシス
### 自己拡張 ### 自己拡張
- **動的ツール構築** - 必要なものを説明すると、IronClawがWASMツールとして構築 - **動的ツール構築** - 必要なものを説明すると、OptimClawがWASMツールとして構築
- **MCPプロトコル** - Model Context Protocolサーバーに接続して追加機能を利用 - **MCPプロトコル** - Model Context Protocolサーバーに接続して追加機能を利用
- **プラグインアーキテクチャ** - 再起動なしで新しいWASMツールやチャネルを追加 - **プラグインアーキテクチャ** - 再起動なしで新しいWASMツールやチャネルを追加
@@ -86,12 +86,12 @@ IronClawは、個人生活にも仕事にも本当に信頼できるAIアシス
## ダウンロードまたはビルド ## ダウンロードまたはビルド
最新のアップデートは[リリースページ](https://github.com/nearai/ironclaw/releases/)をご覧ください。 最新のアップデートは[リリースページ](https://github.com/nearai/optimclaw/releases/)をご覧ください。
<details> <details>
<summary>Windowsインストーラーでインストール(Windows</summary> <summary>Windowsインストーラーでインストール(Windows</summary>
[Windowsインストーラー](https://github.com/nearai/ironclaw/releases/latest/download/ironclaw-x86_64-pc-windows-msvc.msi)をダウンロードして実行してください。 [Windowsインストーラー](https://github.com/nearai/optimclaw/releases/latest/download/optimclaw-x86_64-pc-windows-msvc.msi)をダウンロードして実行してください。
</details> </details>
@@ -99,7 +99,7 @@ IronClawは、個人生活にも仕事にも本当に信頼できるAIアシス
<summary>PowerShellスクリプトでインストール(Windows</summary> <summary>PowerShellスクリプトでインストール(Windows</summary>
```sh ```sh
irm https://github.com/nearai/ironclaw/releases/latest/download/ironclaw-installer.ps1 | iex irm https://github.com/nearai/optimclaw/releases/latest/download/optimclaw-installer.ps1 | iex
``` ```
</details> </details>
@@ -108,7 +108,7 @@ irm https://github.com/nearai/ironclaw/releases/latest/download/ironclaw-install
<summary>シェルスクリプトでインストール(macOS、Linux、Windows/WSL</summary> <summary>シェルスクリプトでインストール(macOS、Linux、Windows/WSL</summary>
```sh ```sh
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/nearai/ironclaw/releases/latest/download/ironclaw-installer.sh | sh curl --proto '=https' --tlsv1.2 -LsSf https://github.com/nearai/optimclaw/releases/latest/download/optimclaw-installer.sh | sh
``` ```
</details> </details>
@@ -116,7 +116,7 @@ curl --proto '=https' --tlsv1.2 -LsSf https://github.com/nearai/ironclaw/release
<summary>Homebrewでインストール(macOS/Linux</summary> <summary>Homebrewでインストール(macOS/Linux</summary>
```sh ```sh
brew install ironclaw brew install optimclaw
``` ```
</details> </details>
@@ -128,8 +128,8 @@ brew install ironclaw
```bash ```bash
# リポジトリをクローン # リポジトリをクローン
git clone https://github.com/nearai/ironclaw.git git clone https://github.com/nearai/optimclaw.git
cd ironclaw cd optimclaw
# ビルド # ビルド
cargo build --release cargo build --release
@@ -146,25 +146,25 @@ cargo test
```bash ```bash
# データベースを作成 # データベースを作成
createdb ironclaw createdb optimclaw
# pgvectorを有効化 # pgvectorを有効化
psql ironclaw -c "CREATE EXTENSION IF NOT EXISTS vector;" psql optimclaw -c "CREATE EXTENSION IF NOT EXISTS vector;"
``` ```
## 設定 ## 設定
セットアップウィザードを実行してIronClawを設定します: セットアップウィザードを実行してOptimClawを設定します:
```bash ```bash
ironclaw onboard optimclaw onboard
``` ```
ウィザードは、データベース接続、NEAR AI認証(ブラウザOAuth経由)、シークレットの暗号化(システムキーチェーンを使用)を処理します。設定は接続されたデータベースに永続化されます。ブートストラップ変数(例:`DATABASE_URL``LLM_BACKEND`)は、データベース接続前に利用できるよう`~/.ironclaw/.env`に書き込まれます。 ウィザードは、データベース接続、NEAR AI認証(ブラウザOAuth経由)、シークレットの暗号化(システムキーチェーンを使用)を処理します。設定は接続されたデータベースに永続化されます。ブートストラップ変数(例:`DATABASE_URL``LLM_BACKEND`)は、データベース接続前に利用できるよう`~/.optimclaw/.env`に書き込まれます。
### 代替LLMプロバイダー ### 代替LLMプロバイダー
IronClawはデフォルトでNEAR AIを使用しますが、多くのLLMプロバイダーをすぐに利用できます。組み込みプロバイダーには**Anthropic**、**OpenAI**、**Google Gemini**、**MiniMax**、**Mistral**、**Ollama**(ローカル)が含まれます。**OpenRouter**300以上のモデル)、**Together AI**、**Fireworks AI**、セルフホストサーバー(**vLLM**、**LiteLLM**)などのOpenAI互換サービスもサポートされています。 OptimClawはデフォルトでNEAR AIを使用しますが、多くのLLMプロバイダーをすぐに利用できます。組み込みプロバイダーには**Anthropic**、**OpenAI**、**Google Gemini**、**MiniMax**、**Mistral**、**Ollama**(ローカル)が含まれます。**OpenRouter**300以上のモデル)、**Together AI**、**Fireworks AI**、セルフホストサーバー(**vLLM**、**LiteLLM**)などのOpenAI互換サービスもサポートされています。
ウィザードでプロバイダーを選択するか、環境変数を直接設定してください: ウィザードでプロバイダーを選択するか、環境変数を直接設定してください:
@@ -184,7 +184,7 @@ LLM_MODEL=anthropic/claude-sonnet-4
## セキュリティ ## セキュリティ
IronClawは、データを保護し悪用を防ぐために多層防御を実装しています。 OptimClawは、データを保護し悪用を防ぐために多層防御を実装しています。
### WASMサンドボックス ### WASMサンドボックス
@@ -280,13 +280,13 @@ WASM ──► 許可リスト ──► リーク ──► 認証情報 ─
```bash ```bash
# 初回セットアップ(データベース、認証などを設定) # 初回セットアップ(データベース、認証などを設定)
ironclaw onboard optimclaw onboard
# インタラクティブREPLを起動 # インタラクティブREPLを起動
cargo run cargo run
# デバッグログ付き # デバッグログ付き
RUST_LOG=ironclaw=debug cargo run RUST_LOG=optimclaw=debug cargo run
``` ```
## 開発 ## 開発
@@ -299,7 +299,7 @@ cargo fmt
cargo clippy --all --benches --tests --examples --all-features cargo clippy --all --benches --tests --examples --all-features
# テスト実行 # テスト実行
createdb ironclaw_test createdb optimclaw_test
cargo test cargo test
# 特定のテストを実行 # 特定のテストを実行
@@ -311,7 +311,7 @@ cargo test test_name
## OpenClawの系譜 ## OpenClawの系譜
IronClawは[OpenClaw](https://github.com/openclaw/openclaw)にインスパイアされたRust再実装です。完全な対応表は[FEATURE_PARITY.md](FEATURE_PARITY.md)をご覧ください。 OptimClawは[OpenClaw](https://github.com/openclaw/openclaw)にインスパイアされたRust再実装です。完全な対応表は[FEATURE_PARITY.md](FEATURE_PARITY.md)をご覧ください。
主な違い: 主な違い:
+28 -28
View File
@@ -1,8 +1,8 @@
<p align="center"> <p align="center">
<img src="ironclaw.png?v=2" alt="IronClaw" width="200"/> <img src="optimclaw.png?v=2" alt="OptimClaw" width="200"/>
</p> </p>
<h1 align="center">IronClaw</h1> <h1 align="center">OptimClaw</h1>
<p align="center"> <p align="center">
<strong>Your secure personal AI assistant, always on your side</strong> <strong>Your secure personal AI assistant, always on your side</strong>
@@ -10,10 +10,10 @@
<p align="center"> <p align="center">
<a href="#license"><img src="https://img.shields.io/badge/license-MIT%20OR%20Apache%202.0-blue.svg" alt="License: MIT OR Apache-2.0" /></a> <a href="#license"><img src="https://img.shields.io/badge/license-MIT%20OR%20Apache%202.0-blue.svg" alt="License: MIT OR Apache-2.0" /></a>
<a href="https://t.me/ironclawAI"><img src="https://img.shields.io/badge/Telegram-%40ironclawAI-26A5E4?style=flat&logo=telegram&logoColor=white" alt="Telegram: @ironclawAI" /></a> <a href="https://t.me/optimclawAI"><img src="https://img.shields.io/badge/Telegram-%40optimclawAI-26A5E4?style=flat&logo=telegram&logoColor=white" alt="Telegram: @optimclawAI" /></a>
<a href="https://www.reddit.com/r/ironclawAI/"><img src="https://img.shields.io/badge/Reddit-r%2FironclawAI-FF4500?style=flat&logo=reddit&logoColor=white" alt="Reddit: r/ironclawAI" /></a> <a href="https://www.reddit.com/r/optimclawAI/"><img src="https://img.shields.io/badge/Reddit-r%2FoptimclawAI-FF4500?style=flat&logo=reddit&logoColor=white" alt="Reddit: r/optimclawAI" /></a>
<a href="https://gitcgr.com/nearai/ironclaw"> <a href="https://gitcgr.com/nearai/optimclaw">
<img src="https://gitcgr.com/badge/nearai/ironclaw.svg" alt="gitcgr" /> <img src="https://gitcgr.com/badge/nearai/optimclaw.svg" alt="gitcgr" />
</a> </a>
</p> </p>
@@ -37,16 +37,16 @@
## Philosophy ## Philosophy
IronClaw is built on a simple principle: **your AI assistant should work for you, not against you**. OptimClaw is built on a simple principle: **your AI assistant should work for you, not against you**.
In a world where AI systems are increasingly opaque about data handling and aligned with corporate interests, IronClaw takes a different approach: In a world where AI systems are increasingly opaque about data handling and aligned with corporate interests, OptimClaw takes a different approach:
- **Your data stays yours** - All information is stored locally, encrypted, and never leaves your control - **Your data stays yours** - All information is stored locally, encrypted, and never leaves your control
- **Transparency by design** - Open source, auditable, no hidden telemetry or data harvesting - **Transparency by design** - Open source, auditable, no hidden telemetry or data harvesting
- **Self-expanding capabilities** - Build new tools on the fly without waiting for vendor updates - **Self-expanding capabilities** - Build new tools on the fly without waiting for vendor updates
- **Defense in depth** - Multiple security layers protect against prompt injection and data exfiltration - **Defense in depth** - Multiple security layers protect against prompt injection and data exfiltration
IronClaw is the AI assistant you can actually trust with your personal and professional life. OptimClaw is the AI assistant you can actually trust with your personal and professional life.
## Features ## Features
@@ -69,7 +69,7 @@ IronClaw is the AI assistant you can actually trust with your personal and profe
### Self-Expanding ### Self-Expanding
- **Dynamic Tool Building** - Describe what you need, and IronClaw builds it as a WASM tool - **Dynamic Tool Building** - Describe what you need, and OptimClaw builds it as a WASM tool
- **MCP Protocol** - Connect to Model Context Protocol servers for additional capabilities - **MCP Protocol** - Connect to Model Context Protocol servers for additional capabilities
- **Plugin Architecture** - Drop in new WASM tools and channels without restarting - **Plugin Architecture** - Drop in new WASM tools and channels without restarting
@@ -89,12 +89,12 @@ IronClaw is the AI assistant you can actually trust with your personal and profe
## Download or Build ## Download or Build
Visit [Releases page](https://github.com/nearai/ironclaw/releases/) to see the latest updates. Visit [Releases page](https://github.com/nearai/optimclaw/releases/) to see the latest updates.
<details> <details>
<summary>Install via Windows Installer (Windows)</summary> <summary>Install via Windows Installer (Windows)</summary>
Download the [Windows Installer](https://github.com/nearai/ironclaw/releases/latest/download/ironclaw-x86_64-pc-windows-msvc.msi) and run it. Download the [Windows Installer](https://github.com/nearai/optimclaw/releases/latest/download/optimclaw-x86_64-pc-windows-msvc.msi) and run it.
</details> </details>
@@ -102,7 +102,7 @@ Download the [Windows Installer](https://github.com/nearai/ironclaw/releases/lat
<summary>Install via powershell script (Windows)</summary> <summary>Install via powershell script (Windows)</summary>
```sh ```sh
irm https://github.com/nearai/ironclaw/releases/latest/download/ironclaw-installer.ps1 | iex irm https://github.com/nearai/optimclaw/releases/latest/download/optimclaw-installer.ps1 | iex
``` ```
</details> </details>
@@ -111,7 +111,7 @@ irm https://github.com/nearai/ironclaw/releases/latest/download/ironclaw-install
<summary>Install via shell script (macOS, Linux, Windows/WSL)</summary> <summary>Install via shell script (macOS, Linux, Windows/WSL)</summary>
```sh ```sh
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/nearai/ironclaw/releases/latest/download/ironclaw-installer.sh | sh curl --proto '=https' --tlsv1.2 -LsSf https://github.com/nearai/optimclaw/releases/latest/download/optimclaw-installer.sh | sh
``` ```
</details> </details>
@@ -119,7 +119,7 @@ curl --proto '=https' --tlsv1.2 -LsSf https://github.com/nearai/ironclaw/release
<summary>Install via Homebrew (macOS/Linux)</summary> <summary>Install via Homebrew (macOS/Linux)</summary>
```sh ```sh
brew install ironclaw brew install optimclaw
``` ```
</details> </details>
@@ -131,8 +131,8 @@ Install it with `cargo`, just make sure you have [Rust](https://rustup.rs) insta
```bash ```bash
# Clone the repository # Clone the repository
git clone https://github.com/nearai/ironclaw.git git clone https://github.com/nearai/optimclaw.git
cd ironclaw cd optimclaw
# Build # Build
cargo build --release cargo build --release
@@ -149,28 +149,28 @@ For **full release** (after modifying channel sources), run `./scripts/build-all
```bash ```bash
# Create database # Create database
createdb ironclaw createdb optimclaw
# Enable pgvector # Enable pgvector
psql ironclaw -c "CREATE EXTENSION IF NOT EXISTS vector;" psql optimclaw -c "CREATE EXTENSION IF NOT EXISTS vector;"
``` ```
## Configuration ## Configuration
Run the setup wizard to configure IronClaw: Run the setup wizard to configure OptimClaw:
```bash ```bash
ironclaw onboard optimclaw onboard
``` ```
The wizard handles database connection, NEAR AI authentication (via browser OAuth), The wizard handles database connection, NEAR AI authentication (via browser OAuth),
and secrets encryption (using your system keychain). Settings are persisted in the and secrets encryption (using your system keychain). Settings are persisted in the
connected database; bootstrap variables (e.g. `DATABASE_URL`, `LLM_BACKEND`) are connected database; bootstrap variables (e.g. `DATABASE_URL`, `LLM_BACKEND`) are
written to `~/.ironclaw/.env` so they are available before the database connects. written to `~/.optimclaw/.env` so they are available before the database connects.
### Alternative LLM Providers ### Alternative LLM Providers
IronClaw defaults to NEAR AI but supports many LLM providers out of the box. OptimClaw defaults to NEAR AI but supports many LLM providers out of the box.
Built-in providers include **Anthropic**, **OpenAI**, **GitHub Copilot**, **Google Gemini**, **MiniMax**, Built-in providers include **Anthropic**, **OpenAI**, **GitHub Copilot**, **Google Gemini**, **MiniMax**,
**Mistral**, and **Ollama** (local). OpenAI-compatible services like **OpenRouter** **Mistral**, and **Ollama** (local). OpenAI-compatible services like **OpenRouter**
(300+ models), **Together AI**, **Fireworks AI**, and self-hosted servers (**vLLM**, (300+ models), **Together AI**, **Fireworks AI**, and self-hosted servers (**vLLM**,
@@ -194,7 +194,7 @@ See [docs/LLM_PROVIDERS.md](docs/LLM_PROVIDERS.md) for a full provider guide.
## Security ## Security
IronClaw implements defense in depth to protect your data and prevent misuse. OptimClaw implements defense in depth to protect your data and prevent misuse.
### WASM Sandbox ### WASM Sandbox
@@ -287,13 +287,13 @@ External content passes through multiple security layers:
```bash ```bash
# First-time setup (configures database, auth, etc.) # First-time setup (configures database, auth, etc.)
ironclaw onboard optimclaw onboard
# Start interactive REPL # Start interactive REPL
cargo run cargo run
# With debug logging # With debug logging
RUST_LOG=ironclaw=debug cargo run RUST_LOG=optimclaw=debug cargo run
``` ```
## Development ## Development
@@ -306,7 +306,7 @@ cargo fmt
cargo clippy --all --benches --tests --examples --all-features cargo clippy --all --benches --tests --examples --all-features
# Run tests # Run tests
createdb ironclaw_test createdb optimclaw_test
cargo test cargo test
# Run specific test # Run specific test
@@ -318,7 +318,7 @@ cargo test test_name
## OpenClaw Heritage ## OpenClaw Heritage
IronClaw is a Rust reimplementation inspired by [OpenClaw](https://github.com/openclaw/openclaw). See [FEATURE_PARITY.md](FEATURE_PARITY.md) for the complete tracking matrix. OptimClaw is a Rust reimplementation inspired by [OpenClaw](https://github.com/openclaw/openclaw). See [FEATURE_PARITY.md](FEATURE_PARITY.md) for the complete tracking matrix.
Key differences: Key differences:
+26 -26
View File
@@ -1,8 +1,8 @@
<p align="center"> <p align="center">
<img src="ironclaw.png?v=2" alt="IronClaw" width="200"/> <img src="optimclaw.png?v=2" alt="OptimClaw" width="200"/>
</p> </p>
<h1 align="center">IronClaw</h1> <h1 align="center">OptimClaw</h1>
<p align="center"> <p align="center">
<strong>Ваш защищенный персональный AI-ассистент, всегда на вашей стороне</strong> <strong>Ваш защищенный персональный AI-ассистент, всегда на вашей стороне</strong>
@@ -10,8 +10,8 @@
<p align="center"> <p align="center">
<a href="#license"><img src="https://img.shields.io/badge/license-MIT%20OR%20Apache%202.0-blue.svg" alt="Лицензия: MIT OR Apache-2.0" /></a> <a href="#license"><img src="https://img.shields.io/badge/license-MIT%20OR%20Apache%202.0-blue.svg" alt="Лицензия: MIT OR Apache-2.0" /></a>
<a href="https://t.me/ironclawAI"><img src="https://img.shields.io/badge/Telegram-%40ironclawAI-26A5E4?style=flat&logo=telegram&logoColor=white" alt="Telegram: @ironclawAI" /></a> <a href="https://t.me/optimclawAI"><img src="https://img.shields.io/badge/Telegram-%40optimclawAI-26A5E4?style=flat&logo=telegram&logoColor=white" alt="Telegram: @optimclawAI" /></a>
<a href="https://www.reddit.com/r/ironclawAI/"><img src="https://img.shields.io/badge/Reddit-r%2FironclawAI-FF4500?style=flat&logo=reddit&logoColor=white" alt="Reddit: r/ironclawAI" /></a> <a href="https://www.reddit.com/r/optimclawAI/"><img src="https://img.shields.io/badge/Reddit-r%2FoptimclawAI-FF4500?style=flat&logo=reddit&logoColor=white" alt="Reddit: r/optimclawAI" /></a>
</p> </p>
<p align="center"> <p align="center">
@@ -34,16 +34,16 @@
## Философия ## Философия
IronClaw построен на простом принципе: **ваш AI-ассистент должен работать на вас, а не против вас**. OptimClaw построен на простом принципе: **ваш AI-ассистент должен работать на вас, а не против вас**.
В мире, где системы ИИ становятся все более непрозрачными в вопросах обработки данных и ориентируются на корпоративные интересы, IronClaw выбирает другой путь: В мире, где системы ИИ становятся все более непрозрачными в вопросах обработки данных и ориентируются на корпоративные интересы, OptimClaw выбирает другой путь:
- **Ваши данные остаются вашими** — вся информация хранится локально, зашифрована и никогда не покидает ваш контроль. - **Ваши данные остаются вашими** — вся информация хранится локально, зашифрована и никогда не покидает ваш контроль.
- **Прозрачность по умолчанию** — открытый исходный код, возможность аудита, отсутствие скрытой телеметрии или сбора данных. - **Прозрачность по умолчанию** — открытый исходный код, возможность аудита, отсутствие скрытой телеметрии или сбора данных.
- **Саморасширяемые возможности** — создавайте новые инструменты «на лету», не дожидаясь обновлений от вендора. - **Саморасширяемые возможности** — создавайте новые инструменты «на лету», не дожидаясь обновлений от вендора.
- **Глубокая защита** — несколько уровней безопасности защищают от инъекций промптов и утечки данных. - **Глубокая защита** — несколько уровней безопасности защищают от инъекций промптов и утечки данных.
IronClaw — это AI-ассистент, которому вы действительно можете доверять в личной и профессиональной жизни. OptimClaw — это AI-ассистент, которому вы действительно можете доверять в личной и профессиональной жизни.
## Возможности ## Возможности
@@ -66,7 +66,7 @@ IronClaw — это AI-ассистент, которому вы действи
### Саморасширяемый ### Саморасширяемый
- **Динамическое создание инструментов** — опишите, что вам нужно, и IronClaw создаст это как инструмент WASM. - **Динамическое создание инструментов** — опишите, что вам нужно, и OptimClaw создаст это как инструмент WASM.
- **Протокол MCP** — подключайтесь к серверам Model Context Protocol для получения дополнительных возможностей. - **Протокол MCP** — подключайтесь к серверам Model Context Protocol для получения дополнительных возможностей.
- **Плагинная архитектура** — добавляйте новые инструменты WASM и каналы без перезагрузки системы. - **Плагинная архитектура** — добавляйте новые инструменты WASM и каналы без перезагрузки системы.
@@ -86,12 +86,12 @@ IronClaw — это AI-ассистент, которому вы действи
## Загрузка и сборка ## Загрузка и сборка
Посетите [страницу релизов](https://github.com/nearai/ironclaw/releases/), чтобы увидеть последние обновления. Посетите [страницу релизов](https://github.com/nearai/optimclaw/releases/), чтобы увидеть последние обновления.
<details> <details>
<summary>Установка через установщик Windows (Windows)</summary> <summary>Установка через установщик Windows (Windows)</summary>
Загрузите [Windows Installer](https://github.com/nearai/ironclaw/releases/latest/download/ironclaw-x86_64-pc-windows-msvc.msi) и запустите его. Загрузите [Windows Installer](https://github.com/nearai/optimclaw/releases/latest/download/optimclaw-x86_64-pc-windows-msvc.msi) и запустите его.
</details> </details>
@@ -99,7 +99,7 @@ IronClaw — это AI-ассистент, которому вы действи
<summary>Установка через powershell-скрипт (Windows)</summary> <summary>Установка через powershell-скрипт (Windows)</summary>
```sh ```sh
irm https://github.com/nearai/ironclaw/releases/latest/download/ironclaw-installer.ps1 | iex irm https://github.com/nearai/optimclaw/releases/latest/download/optimclaw-installer.ps1 | iex
``` ```
</details> </details>
@@ -108,7 +108,7 @@ irm https://github.com/nearai/ironclaw/releases/latest/download/ironclaw-install
<summary>Установка через shell-скрипт (macOS, Linux, Windows/WSL)</summary> <summary>Установка через shell-скрипт (macOS, Linux, Windows/WSL)</summary>
```sh ```sh
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/nearai/ironclaw/releases/latest/download/ironclaw-installer.sh | sh curl --proto '=https' --tlsv1.2 -LsSf https://github.com/nearai/optimclaw/releases/latest/download/optimclaw-installer.sh | sh
``` ```
</details> </details>
@@ -116,7 +116,7 @@ curl --proto '=https' --tlsv1.2 -LsSf https://github.com/nearai/ironclaw/release
<summary>Установка через Homebrew (macOS/Linux)</summary> <summary>Установка через Homebrew (macOS/Linux)</summary>
```sh ```sh
brew install ironclaw brew install optimclaw
``` ```
</details> </details>
@@ -128,8 +128,8 @@ brew install ironclaw
```bash ```bash
# Клонируйте репозиторий # Клонируйте репозиторий
git clone https://github.com/nearai/ironclaw.git git clone https://github.com/nearai/optimclaw.git
cd ironclaw cd optimclaw
# Сборка # Сборка
cargo build --release cargo build --release
@@ -146,25 +146,25 @@ cargo test
```bash ```bash
# Создание базы данных # Создание базы данных
createdb ironclaw createdb optimclaw
# Включение pgvector # Включение pgvector
psql ironclaw -c "CREATE EXTENSION IF NOT EXISTS vector;" psql optimclaw -c "CREATE EXTENSION IF NOT EXISTS vector;"
``` ```
## Конфигурация ## Конфигурация
Запустите мастер настройки для конфигурации IronClaw: Запустите мастер настройки для конфигурации OptimClaw:
```bash ```bash
ironclaw onboard optimclaw onboard
``` ```
Мастер настройки поможет установить соединение с базой данных, пройти аутентификацию NEAR AI (через браузер OAuth) и настроить шифрование секретов (используя системную связку ключей). Настройки сохраняются в базе данных; базовые переменные (например, `DATABASE_URL`, `LLM_BACKEND`) записываются в `~/.ironclaw/.env`, чтобы они были доступны до подключения к БД. Мастер настройки поможет установить соединение с базой данных, пройти аутентификацию NEAR AI (через браузер OAuth) и настроить шифрование секретов (используя системную связку ключей). Настройки сохраняются в базе данных; базовые переменные (например, `DATABASE_URL`, `LLM_BACKEND`) записываются в `~/.optimclaw/.env`, чтобы они были доступны до подключения к БД.
### Альтернативные LLM-провайдеры ### Альтернативные LLM-провайдеры
IronClaw по умолчанию использует NEAR AI, но поддерживает множество LLM-провайдеров из коробки. OptimClaw по умолчанию использует NEAR AI, но поддерживает множество LLM-провайдеров из коробки.
Встроенные провайдеры включают **Anthropic**, **OpenAI**, **Google Gemini**, **MiniMax**, Встроенные провайдеры включают **Anthropic**, **OpenAI**, **Google Gemini**, **MiniMax**,
**Mistral** и **Ollama** (локально). Также поддерживаются OpenAI-совместимые сервисы: **Mistral** и **Ollama** (локально). Также поддерживаются OpenAI-совместимые сервисы:
**OpenRouter** (300+ моделей), **Together AI**, **Fireworks AI** и собственные серверы **OpenRouter** (300+ моделей), **Together AI**, **Fireworks AI** и собственные серверы
@@ -188,7 +188,7 @@ LLM_MODEL=anthropic/claude-sonnet-4
## Безопасность ## Безопасность
IronClaw реализует эшелонированную защиту для обеспечения безопасности ваших данных и предотвращения злоупотреблений. OptimClaw реализует эшелонированную защиту для обеспечения безопасности ваших данных и предотвращения злоупотреблений.
### Песочница WASM ### Песочница WASM
@@ -282,13 +282,13 @@ WASM ──► Валидатор ──► Сканер ───► Инъек
```bash ```bash
# Первоначальная настройка (БД, аутентификация и т.д.) # Первоначальная настройка (БД, аутентификация и т.д.)
ironclaw onboard optimclaw onboard
# Запуск интерактивного REPL # Запуск интерактивного REPL
cargo run cargo run
# С отладочными логами # С отладочными логами
RUST_LOG=ironclaw=debug cargo run RUST_LOG=optimclaw=debug cargo run
``` ```
## Разработка ## Разработка
@@ -301,7 +301,7 @@ cargo fmt
cargo clippy --all --benches --tests --examples --all-features cargo clippy --all --benches --tests --examples --all-features
# Запуск тестов # Запуск тестов
createdb ironclaw_test createdb optimclaw_test
cargo test cargo test
# Запуск конкретного теста # Запуск конкретного теста
@@ -313,7 +313,7 @@ cargo test название_теста
## Наследие OpenClaw ## Наследие OpenClaw
IronClaw — это реализация на Rust, вдохновленная проектом [OpenClaw](https://github.com/openclaw/openclaw). Полную матрицу соответствия функций можно найти в [FEATURE_PARITY.md](FEATURE_PARITY.md). OptimClaw — это реализация на Rust, вдохновленная проектом [OpenClaw](https://github.com/openclaw/openclaw). Полную матрицу соответствия функций можно найти в [FEATURE_PARITY.md](FEATURE_PARITY.md).
Ключевые отличия: Ключевые отличия:
+26 -26
View File
@@ -1,8 +1,8 @@
<p align="center"> <p align="center">
<img src="ironclaw.png?v=2" alt="IronClaw" width="200"/> <img src="optimclaw.png?v=2" alt="OptimClaw" width="200"/>
</p> </p>
<h1 align="center">IronClaw</h1> <h1 align="center">OptimClaw</h1>
<p align="center"> <p align="center">
<strong>安全可靠的个人 AI 助手,始终站在你这边</strong> <strong>安全可靠的个人 AI 助手,始终站在你这边</strong>
@@ -10,8 +10,8 @@
<p align="center"> <p align="center">
<a href="#license"><img src="https://img.shields.io/badge/license-MIT%20OR%20Apache%202.0-blue.svg" alt="License: MIT OR Apache-2.0" /></a> <a href="#license"><img src="https://img.shields.io/badge/license-MIT%20OR%20Apache%202.0-blue.svg" alt="License: MIT OR Apache-2.0" /></a>
<a href="https://t.me/ironclawAI"><img src="https://img.shields.io/badge/Telegram-%40ironclawAI-26A5E4?style=flat&logo=telegram&logoColor=white" alt="Telegram: @ironclawAI" /></a> <a href="https://t.me/optimclawAI"><img src="https://img.shields.io/badge/Telegram-%40optimclawAI-26A5E4?style=flat&logo=telegram&logoColor=white" alt="Telegram: @optimclawAI" /></a>
<a href="https://www.reddit.com/r/ironclawAI/"><img src="https://img.shields.io/badge/Reddit-r%2FironclawAI-FF4500?style=flat&logo=reddit&logoColor=white" alt="Reddit: r/ironclawAI" /></a> <a href="https://www.reddit.com/r/optimclawAI/"><img src="https://img.shields.io/badge/Reddit-r%2FoptimclawAI-FF4500?style=flat&logo=reddit&logoColor=white" alt="Reddit: r/optimclawAI" /></a>
</p> </p>
<p align="center"> <p align="center">
@@ -34,16 +34,16 @@
## 设计理念 ## 设计理念
IronClaw 基于一个简单的原则:**你的 AI 助手应该为你服务,而不是与你为敌。** OptimClaw 基于一个简单的原则:**你的 AI 助手应该为你服务,而不是与你为敌。**
在 AI 系统对数据处理日益不透明、与企业利益捆绑的今天,IronClaw 选择了一条不同的路: 在 AI 系统对数据处理日益不透明、与企业利益捆绑的今天,OptimClaw 选择了一条不同的路:
- **数据归你所有** — 所有信息存储在本地,加密保护,始终在你掌控之下 - **数据归你所有** — 所有信息存储在本地,加密保护,始终在你掌控之下
- **透明至上** — 完全开源,可审计,没有隐藏的遥测或数据收集 - **透明至上** — 完全开源,可审计,没有隐藏的遥测或数据收集
- **自主扩展** — 随时构建新工具,无需等待供应商更新 - **自主扩展** — 随时构建新工具,无需等待供应商更新
- **纵深防御** — 多层安全机制抵御提示注入和数据泄露 - **纵深防御** — 多层安全机制抵御提示注入和数据泄露
IronClaw 是一个你真正可以信赖的 AI 助手,无论是个人生活还是工作。 OptimClaw 是一个你真正可以信赖的 AI 助手,无论是个人生活还是工作。
## 功能特性 ## 功能特性
@@ -66,7 +66,7 @@ IronClaw 是一个你真正可以信赖的 AI 助手,无论是个人生活还
### 自主扩展 ### 自主扩展
- **动态工具构建** — 描述你的需求,IronClaw 会将其构建为 WASM 工具 - **动态工具构建** — 描述你的需求,OptimClaw 会将其构建为 WASM 工具
- **MCP 协议** — 连接模型上下文协议(Model Context Protocol)服务器以获取额外能力 - **MCP 协议** — 连接模型上下文协议(Model Context Protocol)服务器以获取额外能力
- **插件架构** — 无需重启即可加载新的 WASM 工具和渠道 - **插件架构** — 无需重启即可加载新的 WASM 工具和渠道
@@ -86,12 +86,12 @@ IronClaw 是一个你真正可以信赖的 AI 助手,无论是个人生活还
## 下载或编译 ## 下载或编译
访问 [Releases 页面](https://github.com/nearai/ironclaw/releases/) 查看最新版本。 访问 [Releases 页面](https://github.com/nearai/optimclaw/releases/) 查看最新版本。
<details> <details>
<summary>通过 Windows 安装程序安装 (Windows)</summary> <summary>通过 Windows 安装程序安装 (Windows)</summary>
下载 [Windows 安装程序](https://github.com/nearai/ironclaw/releases/latest/download/ironclaw-x86_64-pc-windows-msvc.msi) 并运行。 下载 [Windows 安装程序](https://github.com/nearai/optimclaw/releases/latest/download/optimclaw-x86_64-pc-windows-msvc.msi) 并运行。
</details> </details>
@@ -99,7 +99,7 @@ IronClaw 是一个你真正可以信赖的 AI 助手,无论是个人生活还
<summary>通过 PowerShell 脚本安装 (Windows)</summary> <summary>通过 PowerShell 脚本安装 (Windows)</summary>
```sh ```sh
irm https://github.com/nearai/ironclaw/releases/latest/download/ironclaw-installer.ps1 | iex irm https://github.com/nearai/optimclaw/releases/latest/download/optimclaw-installer.ps1 | iex
``` ```
</details> </details>
@@ -108,7 +108,7 @@ irm https://github.com/nearai/ironclaw/releases/latest/download/ironclaw-install
<summary>通过 Shell 脚本安装 (macOS、Linux、Windows/WSL)</summary> <summary>通过 Shell 脚本安装 (macOS、Linux、Windows/WSL)</summary>
```sh ```sh
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/nearai/ironclaw/releases/latest/download/ironclaw-installer.sh | sh curl --proto '=https' --tlsv1.2 -LsSf https://github.com/nearai/optimclaw/releases/latest/download/optimclaw-installer.sh | sh
``` ```
</details> </details>
@@ -116,7 +116,7 @@ curl --proto '=https' --tlsv1.2 -LsSf https://github.com/nearai/ironclaw/release
<summary>通过 Homebrew 安装 (macOS/Linux)</summary> <summary>通过 Homebrew 安装 (macOS/Linux)</summary>
```sh ```sh
brew install ironclaw brew install optimclaw
``` ```
</details> </details>
@@ -128,8 +128,8 @@ brew install ironclaw
```bash ```bash
# 克隆仓库 # 克隆仓库
git clone https://github.com/nearai/ironclaw.git git clone https://github.com/nearai/optimclaw.git
cd ironclaw cd optimclaw
# 编译 # 编译
cargo build --release cargo build --release
@@ -146,25 +146,25 @@ cargo test
```bash ```bash
# 创建数据库 # 创建数据库
createdb ironclaw createdb optimclaw
# 启用 pgvector 扩展 # 启用 pgvector 扩展
psql ironclaw -c "CREATE EXTENSION IF NOT EXISTS vector;" psql optimclaw -c "CREATE EXTENSION IF NOT EXISTS vector;"
``` ```
## 配置 ## 配置
运行设置向导来配置 IronClaw 运行设置向导来配置 OptimClaw
```bash ```bash
ironclaw onboard optimclaw onboard
``` ```
向导将引导你完成数据库连接、NEAR AI 身份验证(通过浏览器 OAuth)和密钥加密(使用系统钥匙串)。设置会保存在数据库中;引导变量(如 `DATABASE_URL``LLM_BACKEND`)写入 `~/.ironclaw/.env`,以便在数据库连接前可用。 向导将引导你完成数据库连接、NEAR AI 身份验证(通过浏览器 OAuth)和密钥加密(使用系统钥匙串)。设置会保存在数据库中;引导变量(如 `DATABASE_URL``LLM_BACKEND`)写入 `~/.optimclaw/.env`,以便在数据库连接前可用。
### 替代 LLM 提供商 ### 替代 LLM 提供商
IronClaw 默认使用 NEAR AI,但开箱即用地支持多种 LLM 提供商。 OptimClaw 默认使用 NEAR AI,但开箱即用地支持多种 LLM 提供商。
内置提供商包括 **Anthropic**、**OpenAI**、**GitHub Copilot**、**Google Gemini**、**MiniMax**、**Mistral** 和 **Ollama**(本地部署)。同时也支持 OpenAI 兼容服务,如 **OpenRouter**300+ 模型)、**Together AI**、**Fireworks AI** 以及自托管服务器(**vLLM**、**LiteLLM**)。 内置提供商包括 **Anthropic**、**OpenAI**、**GitHub Copilot**、**Google Gemini**、**MiniMax**、**Mistral** 和 **Ollama**(本地部署)。同时也支持 OpenAI 兼容服务,如 **OpenRouter**300+ 模型)、**Together AI**、**Fireworks AI** 以及自托管服务器(**vLLM**、**LiteLLM**)。
在向导中选择你的提供商,或直接设置环境变量: 在向导中选择你的提供商,或直接设置环境变量:
@@ -185,7 +185,7 @@ LLM_MODEL=anthropic/claude-sonnet-4
## 安全机制 ## 安全机制
IronClaw 实现了纵深防御策略来保护你的数据并防止滥用。 OptimClaw 实现了纵深防御策略来保护你的数据并防止滥用。
### WASM 沙箱 ### WASM 沙箱
@@ -278,13 +278,13 @@ WASM ──► 白名单 ──► 泄露扫描 ──► 凭据 ──► 执
```bash ```bash
# 首次设置(配置数据库、认证等) # 首次设置(配置数据库、认证等)
ironclaw onboard optimclaw onboard
# 启动交互式 REPL # 启动交互式 REPL
cargo run cargo run
# 启用调试日志 # 启用调试日志
RUST_LOG=ironclaw=debug cargo run RUST_LOG=optimclaw=debug cargo run
``` ```
## 开发 ## 开发
@@ -297,7 +297,7 @@ cargo fmt
cargo clippy --all --benches --tests --examples --all-features cargo clippy --all --benches --tests --examples --all-features
# 运行测试 # 运行测试
createdb ironclaw_test createdb optimclaw_test
cargo test cargo test
# 运行指定测试 # 运行指定测试
@@ -309,7 +309,7 @@ cargo test test_name
## OpenClaw 传承 ## OpenClaw 传承
IronClaw 是受 [OpenClaw](https://github.com/openclaw/openclaw) 启发的 Rust 重新实现。参见 [FEATURE_PARITY.md](FEATURE_PARITY.md) 了解完整的功能追踪矩阵。 OptimClaw 是受 [OpenClaw](https://github.com/openclaw/openclaw) 启发的 Rust 重新实现。参见 [FEATURE_PARITY.md](FEATURE_PARITY.md) 了解完整的功能追踪矩阵。
主要差异: 主要差异:
+1 -1
View File
@@ -1,5 +1,5 @@
use criterion::{Criterion, black_box, criterion_group, criterion_main}; use criterion::{Criterion, black_box, criterion_group, criterion_main};
use ironclaw::safety::{LeakDetector, Sanitizer, Validator}; use optimclaw::safety::{LeakDetector, Sanitizer, Validator};
fn bench_sanitizer(c: &mut Criterion) { fn bench_sanitizer(c: &mut Criterion) {
let mut group = c.benchmark_group("sanitizer"); let mut group = c.benchmark_group("sanitizer");
+2 -2
View File
@@ -1,6 +1,6 @@
use criterion::{Criterion, black_box, criterion_group, criterion_main}; use criterion::{Criterion, black_box, criterion_group, criterion_main};
use ironclaw::config::SafetyConfig; use optimclaw::config::SafetyConfig;
use ironclaw::safety::{SafetyLayer, Validator}; use optimclaw::safety::{SafetyLayer, Validator};
fn bench_safety_layer_pipeline(c: &mut Criterion) { fn bench_safety_layer_pipeline(c: &mut Criterion) {
let mut group = c.benchmark_group("safety_pipeline"); let mut group = c.benchmark_group("safety_pipeline");
+1 -1
View File
@@ -2,7 +2,7 @@
name = "discord-channel" name = "discord-channel"
version = "0.2.0" version = "0.2.0"
edition = "2021" edition = "2021"
description = "Discord channel for IronClaw" description = "Discord channel for OptimClaw"
license = "MIT OR Apache-2.0" license = "MIT OR Apache-2.0"
publish = false publish = false
+6 -6
View File
@@ -1,4 +1,4 @@
# Discord Channel for IronClaw # Discord Channel for OptimClaw
WASM channel for Discord integration - handle slash commands and button interactions via webhooks. WASM channel for Discord integration - handle slash commands and button interactions via webhooks.
@@ -13,12 +13,12 @@ WASM channel for Discord integration - handle slash commands and button interact
1. Create a Discord Application at <https://discord.com/developers/applications> 1. Create a Discord Application at <https://discord.com/developers/applications>
2. Create a Bot and get the token 2. Create a Bot and get the token
3. Set up Interactions URL to point to your IronClaw instance 3. Set up Interactions URL to point to your OptimClaw instance
4. Copy the Application ID and Public Key 4. Copy the Application ID and Public Key
5. Store in IronClaw secrets: 5. Store in OptimClaw secrets:
```bash ```bash
ironclaw secret set discord_bot_token YOUR_BOT_TOKEN optimclaw secret set discord_bot_token YOUR_BOT_TOKEN
``` ```
**Note:** The `discord_bot_token` secret is used for Discord REST API calls. **Note:** The `discord_bot_token` secret is used for Discord REST API calls.
@@ -51,7 +51,7 @@ curl -X POST \
In your Discord app settings, set: In your Discord app settings, set:
- Interactions Endpoint URL: `https://your-ironclaw.com/webhook/discord` - Interactions Endpoint URL: `https://your-optimclaw.com/webhook/discord`
## Usage Examples ## Usage Examples
@@ -127,7 +127,7 @@ To send embeds, include an `embeds` array in the `metadata_json` field of the ag
### "401 Unauthorized" ### "401 Unauthorized"
- Check that `discord_bot_token` is set correctly in IronClaw secrets. - Check that `discord_bot_token` is set correctly in OptimClaw secrets.
- Ensure the bot is added to the server. - Ensure the bot is added to the server.
### "Interaction Failed" ### "Interaction Failed"
+2 -2
View File
@@ -1,4 +1,4 @@
//! Discord Gateway/Webhook channel for IronClaw. //! Discord Gateway/Webhook channel for OptimClaw.
//! //!
//! This WASM component implements the channel interface for handling Discord //! This WASM component implements the channel interface for handling Discord
//! interactions via webhooks and sending messages back to Discord. //! interactions via webhooks and sending messages back to Discord.
@@ -1171,7 +1171,7 @@ fn send_pairing_reply(ctx: &PairingReplyCtx, code: &str) -> Result<(), String> {
); );
let payload = serde_json::json!({ let payload = serde_json::json!({
"content": format!( "content": format!(
"To pair with this bot, run: `ironclaw pairing approve discord {}`", "To pair with this bot, run: `optimclaw pairing approve discord {}`",
code code
), ),
"flags": 64 "flags": 64
+1 -1
View File
@@ -2,7 +2,7 @@
name = "feishu-channel" name = "feishu-channel"
version = "0.1.0" version = "0.1.0"
edition = "2021" edition = "2021"
description = "Feishu/Lark Bot channel for IronClaw" description = "Feishu/Lark Bot channel for OptimClaw"
license = "MIT OR Apache-2.0" license = "MIT OR Apache-2.0"
[lib] [lib]
+1 -1
View File
@@ -7,7 +7,7 @@
"auth": { "auth": {
"secret_name": "feishu_app_id", "secret_name": "feishu_app_id",
"display_name": "Feishu / Lark", "display_name": "Feishu / Lark",
"instructions": "Create a bot at https://open.feishu.cn/app (Feishu) or https://open.larksuite.com/app (Lark). You need the App ID and App Secret. Note: IronClaw supports Event Subscription webhook delivery, but not Feishu's long-connection websocket mode.", "instructions": "Create a bot at https://open.feishu.cn/app (Feishu) or https://open.larksuite.com/app (Lark). You need the App ID and App Secret. Note: OptimClaw supports Event Subscription webhook delivery, but not Feishu's long-connection websocket mode.",
"setup_url": "https://open.feishu.cn/app", "setup_url": "https://open.feishu.cn/app",
"token_hint": "App ID looks like cli_XXXX, App Secret is a long alphanumeric string", "token_hint": "App ID looks like cli_XXXX, App Secret is a long alphanumeric string",
"env_var": "FEISHU_APP_ID" "env_var": "FEISHU_APP_ID"
+2 -2
View File
@@ -1,11 +1,11 @@
// Feishu API types have fields reserved for future use. // Feishu API types have fields reserved for future use.
#![allow(dead_code)] #![allow(dead_code)]
//! Feishu/Lark Bot channel for IronClaw. //! Feishu/Lark Bot channel for OptimClaw.
//! //!
//! This WASM component implements the channel interface for handling Feishu //! This WASM component implements the channel interface for handling Feishu
//! webhooks (Event Subscription v2.0) and sending messages back via the //! webhooks (Event Subscription v2.0) and sending messages back via the
//! Feishu/Lark Bot API. IronClaw currently does not connect to Feishu's //! Feishu/Lark Bot API. OptimClaw currently does not connect to Feishu's
//! long-connection websocket subscription mode; use Event Subscription //! long-connection websocket subscription mode; use Event Subscription
//! webhooks for this channel. //! webhooks for this channel.
//! //!
+1 -1
View File
@@ -2,7 +2,7 @@
name = "slack-channel" name = "slack-channel"
version = "0.2.1" version = "0.2.1"
edition = "2021" edition = "2021"
description = "Slack Events API channel for IronClaw" description = "Slack Events API channel for OptimClaw"
license = "MIT OR Apache-2.0" license = "MIT OR Apache-2.0"
[lib] [lib]
+2 -2
View File
@@ -1,4 +1,4 @@
//! Slack Events API channel for IronClaw. //! Slack Events API channel for OptimClaw.
//! //!
//! This WASM component implements the channel interface for handling Slack //! This WASM component implements the channel interface for handling Slack
//! webhooks and sending messages back to Slack. //! webhooks and sending messages back to Slack.
@@ -650,7 +650,7 @@ fn send_pairing_reply(channel_id: &str, code: &str) -> Result<(), String> {
let payload = serde_json::json!({ let payload = serde_json::json!({
"channel": channel_id, "channel": channel_id,
"text": format!( "text": format!(
"To pair with this bot, run: `ironclaw pairing approve slack {}`", "To pair with this bot, run: `optimclaw pairing approve slack {}`",
code code
), ),
}); });
+1 -1
View File
@@ -2,7 +2,7 @@
name = "telegram-channel" name = "telegram-channel"
version = "0.2.1" version = "0.2.1"
edition = "2021" edition = "2021"
description = "Telegram Bot API channel for IronClaw" description = "Telegram Bot API channel for OptimClaw"
license = "MIT OR Apache-2.0" license = "MIT OR Apache-2.0"
[lib] [lib]
+4 -4
View File
@@ -1,7 +1,7 @@
// Telegram API types have fields reserved for future use (entities, reply threading, etc.) // Telegram API types have fields reserved for future use (entities, reply threading, etc.)
#![allow(dead_code)] #![allow(dead_code)]
//! Telegram Bot API channel for IronClaw. //! Telegram Bot API channel for OptimClaw.
//! //!
//! This WASM component implements the channel interface for handling Telegram //! This WASM component implements the channel interface for handling Telegram
//! webhooks and sending messages back via the Bot API. //! webhooks and sending messages back via the Bot API.
@@ -1170,7 +1170,7 @@ fn send_photo(
); );
} }
let boundary = format!("ironclaw-{}", channel_host::now_millis()); let boundary = format!("optimclaw-{}", channel_host::now_millis());
let mut body = Vec::new(); let mut body = Vec::new();
write_multipart_field(&mut body, &boundary, "chat_id", &chat_id.to_string()); write_multipart_field(&mut body, &boundary, "chat_id", &chat_id.to_string());
@@ -1235,7 +1235,7 @@ fn send_document(
) -> Result<(), String> { ) -> Result<(), String> {
let message_thread_id = normalize_thread_id(message_thread_id); let message_thread_id = normalize_thread_id(message_thread_id);
let boundary = format!("ironclaw-{}", channel_host::now_millis()); let boundary = format!("optimclaw-{}", channel_host::now_millis());
let mut body = Vec::new(); let mut body = Vec::new();
write_multipart_field(&mut body, &boundary, "chat_id", &chat_id.to_string()); write_multipart_field(&mut body, &boundary, "chat_id", &chat_id.to_string());
@@ -1552,7 +1552,7 @@ fn send_pairing_reply(chat_id: i64, code: &str) -> Result<(), String> {
send_message( send_message(
chat_id, chat_id,
&format!( &format!(
"To pair with this bot, run: `ironclaw pairing approve telegram {}`", "To pair with this bot, run: `optimclaw pairing approve telegram {}`",
code code
), ),
None, None,
+1 -1
View File
@@ -2,7 +2,7 @@
name = "whatsapp-channel" name = "whatsapp-channel"
version = "0.2.0" version = "0.2.0"
edition = "2021" edition = "2021"
description = "WhatsApp Cloud API channel for IronClaw" description = "WhatsApp Cloud API channel for OptimClaw"
[lib] [lib]
crate-type = ["cdylib"] crate-type = ["cdylib"]
+2 -2
View File
@@ -1,7 +1,7 @@
// WhatsApp API types have fields reserved for future use (contacts, statuses, etc.) // WhatsApp API types have fields reserved for future use (contacts, statuses, etc.)
#![allow(dead_code)] #![allow(dead_code)]
//! WhatsApp Cloud API channel for IronClaw. //! WhatsApp Cloud API channel for OptimClaw.
//! //!
//! This WASM component implements the channel interface for handling WhatsApp //! This WASM component implements the channel interface for handling WhatsApp
//! webhooks and sending messages back via the Cloud API. //! webhooks and sending messages back via the Cloud API.
@@ -910,7 +910,7 @@ fn send_pairing_reply(
"text": { "text": {
"preview_url": false, "preview_url": false,
"body": format!( "body": format!(
"To pair with this bot, run: ironclaw pairing approve whatsapp {}", "To pair with this bot, run: optimclaw pairing approve whatsapp {}",
code code
) )
} }
+1 -1
View File
@@ -1,6 +1,6 @@
# Complexity guardrails for AI-assisted development quality. # Complexity guardrails for AI-assisted development quality.
# These thresholds prevent new violations while preserving existing code. # These thresholds prevent new violations while preserving existing code.
# See: https://github.com/nearai/ironclaw/issues/338 # See: https://github.com/nearai/optimclaw/issues/338
cognitive-complexity-threshold = 15 # default: 25 (only active when lint is enabled) cognitive-complexity-threshold = 15 # default: 25 (only active when lint is enabled)
too-many-lines-threshold = 100 # default: 100 (only active when lint is enabled) too-many-lines-threshold = 100 # default: 100 (only active when lint is enabled)
@@ -1,13 +1,13 @@
[package] [package]
name = "ironclaw_common" name = "optimclaw_common"
version = "0.1.0" version = "0.1.0"
edition = "2024" edition = "2024"
rust-version = "1.92" rust-version = "1.92"
description = "Shared types and utilities for the IronClaw workspace" description = "Shared types and utilities for the OptimClaw workspace"
authors = ["NEAR AI <[email protected]>"] authors = ["NEAR AI <[email protected]>"]
license = "MIT OR Apache-2.0" license = "MIT OR Apache-2.0"
homepage = "https://github.com/nearai/ironclaw" homepage = "https://github.com/nearai/optimclaw"
repository = "https://github.com/nearai/ironclaw" repository = "https://github.com/nearai/optimclaw"
[package.metadata.dist] [package.metadata.dist]
dist = false dist = false
@@ -1,4 +1,4 @@
//! Shared types and utilities for the IronClaw workspace. //! Shared types and utilities for the OptimClaw workspace.
mod event; mod event;
mod util; mod util;
@@ -1,13 +1,13 @@
[package] [package]
name = "ironclaw_safety" name = "optimclaw_safety"
version = "0.2.0" version = "0.2.0"
edition = "2024" edition = "2024"
rust-version = "1.92" rust-version = "1.92"
description = "Prompt injection defense, input validation, secret leak detection, and safety policy enforcement" description = "Prompt injection defense, input validation, secret leak detection, and safety policy enforcement"
authors = ["NEAR AI <[email protected]>"] authors = ["NEAR AI <[email protected]>"]
license = "MIT OR Apache-2.0" license = "MIT OR Apache-2.0"
homepage = "https://github.com/nearai/ironclaw" homepage = "https://github.com/nearai/optimclaw"
repository = "https://github.com/nearai/ironclaw" repository = "https://github.com/nearai/optimclaw"
[package.metadata.dist] [package.metadata.dist]
dist = false dist = false
@@ -1,5 +1,5 @@
[package] [package]
name = "ironclaw-safety-fuzz" name = "optimclaw-safety-fuzz"
version = "0.0.0" version = "0.0.0"
publish = false publish = false
edition = "2021" edition = "2021"
@@ -11,7 +11,7 @@ cargo-fuzz = true
libfuzzer-sys = "0.4" libfuzzer-sys = "0.4"
serde_json = "1" serde_json = "1"
[dependencies.ironclaw_safety] [dependencies.optimclaw_safety]
path = ".." path = ".."
[[bin]] [[bin]]
@@ -1,6 +1,6 @@
# ironclaw_safety Fuzz Targets # optimclaw_safety Fuzz Targets
Fuzz testing for the `ironclaw_safety` crate using [cargo-fuzz](https://github.com/rust-fuzz/cargo-fuzz) (libFuzzer). Fuzz testing for the `optimclaw_safety` crate using [cargo-fuzz](https://github.com/rust-fuzz/cargo-fuzz) (libFuzzer).
## Targets ## Targets
@@ -22,7 +22,7 @@ rustup install nightly
## Running ## Running
```bash ```bash
cd crates/ironclaw_safety cd crates/optimclaw_safety
# Run a specific target (runs until stopped or crash found) # Run a specific target (runs until stopped or crash found)
cargo +nightly fuzz run fuzz_safety_sanitizer cargo +nightly fuzz run fuzz_safety_sanitizer

Some files were not shown because too many files have changed in this diff Show More