Rebrand to IronClaw with security-first mission

Renamed project from "near-agent" to "ironclaw" throughout the codebase.
Updated documentation to emphasize the core philosophy:
- Your data stays yours (local, encrypted, no telemetry)
- Self-expanding capabilities (build tools on the fly)
- Defense in depth (WASM sandbox, prompt injection defense)
- Always on user's side

Key changes:
- Package name: near-agent -> ironclaw
- Config paths: ~/.near-agent/ -> ~/.ironclaw/
- Database name in docs: near_agent -> ironclaw
- CLI binary: near-agent -> ironclaw
- Log filters: RUST_LOG=near_agent -> RUST_LOG=ironclaw
- All user-facing strings (welcome messages, help text, etc.)

Preserved for compatibility:
- HKDF salt "near-agent-secrets-v1" (changing would break existing secrets)
- WIT interface names (near::agent::*)
- NEAR AI provider config (NEARAI_* env vars)

Co-Authored-By: Claude Opus 4.5 <[email protected]>
This commit is contained in:
Illia Polosukhin
2026-02-05 01:10:40 -08:00
co-authored by Claude Opus 4.5
parent 2486065fa7
commit 598dd43b1c
36 changed files with 266 additions and 231 deletions
+4 -2
View File
@@ -13,8 +13,10 @@ pub use tool::{ToolCommand, run_tool_command};
use clap::{Parser, Subcommand};
#[derive(Parser, Debug)]
#[command(name = "near-agent")]
#[command(about = "LLM-powered autonomous agent for the NEAR AI marketplace")]
#[command(name = "ironclaw")]
#[command(
about = "Secure personal AI assistant that protects your data and expands its capabilities"
)]
#[command(version)]
pub struct Cli {
#[command(subcommand)]
+8 -8
View File
@@ -13,8 +13,8 @@ use crate::tools::wasm::{CapabilitiesFile, compute_binary_hash};
/// Default tools directory.
fn default_tools_dir() -> PathBuf {
dirs::home_dir()
.map(|h| h.join(".near-agent").join("tools"))
.unwrap_or_else(|| PathBuf::from(".near-agent/tools"))
.map(|h| h.join(".ironclaw").join("tools"))
.unwrap_or_else(|| PathBuf::from(".ironclaw/tools"))
}
#[derive(Subcommand, Debug, Clone)]
@@ -32,7 +32,7 @@ pub enum ToolCommand {
#[arg(long)]
capabilities: Option<PathBuf>,
/// Target directory for installation (default: ~/.near-agent/tools/)
/// Target directory for installation (default: ~/.ironclaw/tools/)
#[arg(short, long)]
target: Option<PathBuf>,
@@ -51,7 +51,7 @@ pub enum ToolCommand {
/// List installed tools
List {
/// Directory to list tools from (default: ~/.near-agent/tools/)
/// Directory to list tools from (default: ~/.ironclaw/tools/)
#[arg(short, long)]
dir: Option<PathBuf>,
@@ -65,7 +65,7 @@ pub enum ToolCommand {
/// Name of the tool to remove
name: String,
/// Directory to remove tool from (default: ~/.near-agent/tools/)
/// Directory to remove tool from (default: ~/.ironclaw/tools/)
#[arg(short, long)]
dir: Option<PathBuf>,
},
@@ -75,7 +75,7 @@ pub enum ToolCommand {
/// Name of the tool or path to .wasm file
name_or_path: String,
/// Directory to look for tool (default: ~/.near-agent/tools/)
/// Directory to look for tool (default: ~/.ironclaw/tools/)
#[arg(short, long)]
dir: Option<PathBuf>,
},
@@ -420,7 +420,7 @@ async fn list_tools(dir: Option<PathBuf>, verbose: bool) -> anyhow::Result<()> {
if !tools_dir.exists() {
println!("No tools directory found at {}", tools_dir.display());
println!("Install a tool with: near-agent tool install <path>");
println!("Install a tool with: ironclaw tool install <path>");
return Ok(());
}
@@ -674,7 +674,7 @@ mod tests {
#[test]
fn test_default_tools_dir() {
let dir = default_tools_dir();
assert!(dir.to_string_lossy().contains(".near-agent"));
assert!(dir.to_string_lossy().contains(".ironclaw"));
assert!(dir.to_string_lossy().contains("tools"));
}
}