ACE is a modular AI agent designed to reason, plan, and execute tasks using tools.
It combines:
- Structured tool usage
- LLM-driven reasoning
- Safe workspace execution
- Long-term memory retrieval
- Drop-in agent skills
- CLI-based interaction
ACE functions as a lightweight developer agent capable of creating files, running code, managing background processes, using project-specific skills, and retrieving information from the web.
- Multi-step reasoning loop
- Tool-based architecture for file, directory, command, API, and process operations
- CLI interface through the
acecommand - Clean spinner-based runtime status display
- Optional detailed runtime logs with
/logs on - Long-term memory support
- Web search integration through Tavily
- Multiple LLM providers:
- Ollama, local or hosted
- OpenAI
- Safe workspace model with path traversal protection
- Background process management
- Drop-in skill system compatible with Anthropic-style
SKILL.mdfiles - Project-local and global skill discovery
git clone https://github.com/xbze3/ace-the-agent.git
cd ace-the-agentOn Windows:
python -m venv venv
venv\Scripts\activateOn macOS/Linux:
python -m venv venv
source venv/bin/activatepip install -e .aceCreate a .env file in the folder where you run ACE.
Example:
# Choose provider
LLM_PROVIDER=your_llm_provider # "ollama" or "openai"
# Number of steps agent is able to take before being forced to stop
MAX_STEPS=30
# Ollama
OLLAMA_BASE_URL=your_ollama_base_here
OLLAMA_MODEL=your_ollama_model
OLLAMA_API_KEY=your_ollama_api_key
# OpenAI
OPENAI_API_KEY=your_openai_api_key_here
OPENAI_MODEL=your_openai_model
# Web Searches
TAVILY_API_KEY=your_tvly_api_key_here
# Embeddings
EMBEDDING_PROVIDER=your_embedding_provider
EMBEDDING_MODEL=your_embedding_model
EMBEDDING_BASE_URL=your_embedding_base_url
EMBEDDING_API_KEY=your_embedding_api_key
EMBEDDING_TIMEOUT=60
MEMORY_STORE_PROVIDER=your_memory_store_provider
MEMORY_DB_DIR=your_memory_db_path
MEMORY_COLLECTION=your_memory_collection
MEMORY_TOP_K=your_top_k
MEMORY_SIMILARITY_THRESHOLD=your_similarity_threshold
# Requests
LLM_REQUEST_TIMEOUT=your_request_timeout
LLM_MAX_RETRIES=your_max_retries
LLM_RETRY_BACKOFF_SECONDS=your_max_retry_backoff_in_seconds
# Show logs
ACE_SHOW_LOGS=false
# ACE Skills Directory Location
ACE_SKILLS_DIR=./.agents/skills
# ACE workspace
ACE_WORKSPACE_DIR=workspaceACE separates package code from runtime user/project data.
Recommended runtime layout:
my-project/
├── .env
├── agents/
│ └── skills/
│ ├── frontend-design/
│ │ └── SKILL.md
│ ├── python-script-builder/
│ │ └── SKILL.md
│ └── nodejs-express-server/
│ └── SKILL.md
│
└── workspace/
└── generated-files-here
Run ACE from inside my-project/:
aceACE will use the local .env, local skills, and local workspace.
ACE operates inside a controlled workspace directory.
By default:
ACE_WORKSPACE_DIR=workspaceThis means files are created inside:
./workspace/
The workspace provides:
- Safe file operations
- Protection against path traversal
- Predictable file placement
- Separation between ACE package code and generated user files
Any files you want ACE to read, modify, or execute should be placed inside the workspace.
ACE supports drop-in skills using Anthropic-style SKILL.md files.
A skill is a folder containing a SKILL.md file with YAML frontmatter and Markdown instructions.
Example:
agents/skills/frontend-design/SKILL.md
Example skill:
---
name: frontend-design
description: Create distinctive, production-grade frontend interfaces, websites, landing pages, React components, and HTML/CSS layouts.
---
# Frontend Design
Use this skill when the user asks to create or improve a frontend interface.ACE can discover skills from multiple locations:
- Paths provided by
ACE_SKILLS_DIR ./agents/skills./.agents/skills~/.agents/skills
This allows ACE to use both project-local skills and globally installed skills.
You can provide multiple skill directories using semicolons:
ACE_SKILLS_DIR=agents/skills;C:/Users/yourname/.agents/skillsYou can force ACE to use a specific skill:
/skill frontend-design create a single-page website
or:
/frontend-design create a single-page website
If you install skills globally with the skills CLI, they are commonly stored in:
~/.agents/skills/
On Windows, that is usually:
C:\Users\yourname\.agents\skills\
ACE can be configured to discover these automatically.
Start ACE:
aceAvailable commands:
/help Show command help
/logs Show current log display mode
/logs on Show detailed runtime logs
/logs off Show clean spinner/status mode
/clear Clear terminal
/exit End session
/quit End session
Keyboard shortcuts:
Ctrl+C Gracefully stop ACE
Ctrl+Z then Enter Gracefully stop ACE on Windows
ACE has two terminal display modes.
Clean mode:
ACE_SHOW_LOGS=false
This shows only high-level states such as:
Selecting skill
Checking memory
Preparing context
Thinking
Parsing response
Running tool
Saving memory
Detailed mode:
ACE_SHOW_LOGS=true
Or inside the CLI:
/logs on
This shows detailed runtime information, including:
- Skill routing details
- LLM messages
- Raw LLM responses
- Parsed JSON
- Tool arguments
- Tool results
- Memory retrieval results
Runtime logs are still written to file even when terminal logs are hidden.
ACE follows a structured loop:
- Receive user input
- Select a relevant skill, if available
- Search long-term memory
- Build prompt with system rules, memory, active skill instructions, and available tools
- Call the LLM
- Parse the LLM response as JSON
- Execute a tool if requested
- Feed the tool result back into the loop
- Repeat until a final answer is returned
The LLM must return exactly one of these formats:
{
"action": "tool_name",
"arguments": {
"param": "value"
}
}or:
{
"final_answer": "response text"
}ACE supports a wide range of operations through its tool system.
- Create files
- Read files
- Update files
- Delete files
- Append content
- Perform targeted replacements
- Create directories
- Inspect directories
- Delete directories
- View workspace structure
- Run Python scripts
- Run Node.js scripts
- Install Node dependencies
- Run npm scripts
- Execute controlled commands when no specialized tool fits
- Perform HTTP requests
- Search the web in real time using Tavily
- Test local servers and API endpoints
- Start long-running background processes
- Inspect tracked background processes
- Stop running processes
Good starter skills for testing ACE:
frontend-design
python-script-builder
nodejs-express-server
code-review-debugger
api-client-tester
project-scaffolder
Example prompt:
/skill python-script-builder create a Python script that reads a text file, counts the words, and outputs the top 10 most common words. Create a sample input file and run the script.
Example prompt:
/skill frontend-design create a cute single-file HTML website and place it in the workspace.
Example prompt:
/skill nodejs-express-server create a simple Express API with a health route, install dependencies, start the server, and test the endpoint.
ace-the-agent/
├── ace.py # CLI entry point
├── core/ # Agent loop, prompt harness, state
├── llm/ # LLM client and response parser
├── memory/ # Long-term memory service
├── runtime/ # Executor, logger, spinner, process helpers
├── skills/ # Skill system code, not user skill content
│ └── core/
├── tools/ # Tool implementations and registry
├── pyproject.toml
├── README.md
└── .env.example
- Workspace sandboxing
- Path traversal prevention
- Tool permission filtering for active skills
- Runtime enforcement of allowed tools
- Command restrictions
- No shell chaining for controlled command execution
- Background process tracking
- Graceful handling of tool failures
- JSON parsing and repair flow
- Not a full security sandbox
- LLM output quality depends on the selected provider and model
- Local models may time out on very large prompts
- Background processes must be managed carefully
- Some skills may need ACE-specific default tool permissions
- Skills are loaded at startup unless a reload command is added
/skills listcommand/skills reloadcommand- Embedding-based skill routing
- Hybrid skill routing: embeddings shortlist, LLM final decision
- Better environment diagnostics
- Docker-based sandboxing
- Richer memory controls
- Skill marketplace/import workflow
- Better package/runtime separation
- More robust automated code validation
This project is licensed under the MIT License.