@aeye/cletus
v0.3.5
Published
Interactive CLI demo showcasing @aeye capabilities
Maintainers
Readme
@aeye/cletus
Interactive CLI demo showcasing @aeye capabilities - an AI-powered assistant with file management, data operations, and autonomous task execution.
npm i -g @aeye/cletusFor the best experience, configure what models are used for each use case. Use openai/gpt-4o for chat, google/nano-banana for image generation and editing, anthropic/claude-sonnet-4 for file editing, etc! If you don't specify then a model will be dynamically chosen based on configured weights and what can handle the request.
Features
Adaptive Tooling
Cletus uses an intelligent tool selection system that automatically picks the most relevant tools based on your conversation context. Instead of having access to all 50+ tools at once (which can overwhelm the AI), Cletus:
- Analyzes your recent messages - Uses embeddings to understand what you're asking about
- Selects relevant tools - Picks the top 15-20 most semantically similar tools for the task
- Adapts over time - As your conversation evolves, the available tools adjust automatically
You can also manually switch between specialized toolsets to focus on specific domains:
- planner - Task management and todo operations
- librarian - Knowledge base and semantic search
- clerk - File system operations and shell commands
- secretary - User memories and assistant management
- architect - Custom data type definitions and schema management
- artist - Image generation, editing, and analysis
- internet - Web search and API operations
- dba - Data record management and querying
Use the retool tool to switch between adaptive mode and specific toolsets
Screenshots
Examples
Here are some examples of what you can do with Cletus:
File Operations:
- "Search for all TypeScript files in the src directory"
- "Read package.json and tell me what dependencies are outdated"
- "Create a new file called README.md with a project description"
- "Find all files containing the word 'TODO' and summarize them"
Data Management:
- "Create a 'Recipe' type with fields for ingredients, instructions, and cooking time"
- "Add a new recipe for chocolate chip cookies"
- "Find all recipes that contain chocolate"
Task Planning:
- "Add a todo to implement user authentication"
- "Show me all my pending todos"
- "Mark the first todo as done"
Graphic Operations:
- "Generate an image of a sunset over mountains"
- "Find all images I've generated that contain trees"
- "Analyze this screenshot and describe what you see"
- "Generate a chart with this data"
- "Create a diagram that visualizes this process"
Web Research:
- "Search the web for the latest TypeScript features"
- "Get the content from https://example.com and summarize it"
Knowledge Base:
- "Remember that I prefer tabs over spaces"
- "Index all files in my project for semantic search"
- "Search my knowledge base for information about authentication"
Shell Commands:
- "Run npm test and show me the results"
- "Execute git status and tell me what files have changed"
🎨 Interactive Terminal UI
- Beautiful React/Ink-based interface
- Chat history management
- Real-time streaming responses
- Markdown rendering
- Operation approval/rejection system
- Settings configuration wizard
- Automatic light/dark mode theme detection for optimal color visibility
💾 Persistent Storage
- Chat history with metadata
- User preferences and memories
- Custom data types and records
- Knowledge base with vector embeddings
- Multi-provider API configurations
⚡ Advanced Capabilities
- Autonomous Mode - AI can execute multiple operations without asking for approval
- Custom Assistants - Create persona-based assistants with unique prompts (Gollum, Sherlock Holmes, etc.)
- Type System - Define custom data structures with fields and validation
- Knowledge Base - Semantic search over user memories, files, and data records
- Reasoning Support - Built-in reasoning capabilities with chain-of-thought processing, break down complex tasks into manageable steps, connects information across different contexts, and employs analytical problem-solving to handle user requests with sophisticated reasoning
- File Intelligence - Summarize, index, and search files (PDF, Word, Excel, images, etc.)
- Image Operations - Generate, edit, analyze, and find images
- Web Integration - Search the web, scrape pages, make API calls
📝 Prompt File Support
Cletus supports three complementary ways to customize the AI's context and behavior:
- User Prompts - Configure via
config.user.globalPromptfor persistent instructions across all chats - Chat Prompts - Set per-chat custom prompts when creating or updating a chat
- Prompt Files - Automatically load contextual instructions from files in your current working directory
These prompt types work together: user prompts set global preferences, chat prompts provide conversation-specific context, and prompt files add project-specific instructions from your working directory.
Prompt File Loading
When starting a chat, Cletus searches for prompt files in your current working directory (case-insensitive):
Default Files Checked (in order):
cletus.mdagents.mdclaude.md
Custom Files - Configure via
config.user.promptFilesto replace the default list with your own filesLoading Behavior:
- Files are searched in the order specified
- Only the first file found is loaded (not all matching files)
- Content is wrapped in
<prompt-file name="filename">tags - The content is incorporated into the system prompt for every AI request
Example Usage:
Create a cletus.md file in your project directory:
# Project Context
This is a TypeScript project using React and Node.js.
Follow these coding standards:
- Use functional components
- Prefer async/await over promises
- Use descriptive variable namesWhen you run cletus from that directory, these instructions will automatically be included in the AI's context.
Building from Source
# Clone the repository
git clone https://github.com/ClickerMonkey/aeye.git
cd aeye/packages/cletus
# Install dependencies
npm install
# Build and link
npm run build
npm link
# Run
cletusQuick Start
First Launch
When you run cletus for the first time, an interactive setup wizard will guide you through:
- User Information - Your name and pronouns
- Provider Setup - Configure AI providers (OpenAI, OpenRouter, Replicate, AWS Bedrock)
- API Keys - Enter your API keys or credentials for each provider
The configuration is saved to ~/.cletus/config.json and can be modified later through the settings menu.
Basic Usage
# Start Cletus
cletus
# The main menu provides options to:
# - Start a new chat
# - Continue existing chats
# - Configure settings
# - ExitCommand Line Arguments
--profile=NAMEor--profile NAME- Use a specific configuration profile
Creating a Chat
- Select "New Chat" from the main menu
- Optionally choose an assistant persona (or use default)
- Optionally provide a custom system prompt
- Start chatting!
Tools
Cletus provides 50+ tools organized into specialized toolsets. Here's what each toolset offers:
🗂️ Planner (planner)
Task management and todo operations:
todosList- View all todostodosAdd- Add a new todotodosDone- Mark a todo as completetodosGet- Get a specific todo by IDtodosRemove- Remove a todotodosReplace- Replace/update a todotodosClear- Clear all todos
📚 Librarian (librarian)
Knowledge base with semantic search:
knowledgeSearch- Search knowledge base semanticallyknowledgeSources- List all knowledge sourcesknowledgeAdd- Add user memories to knowledge baseknowledgeDelete- Delete knowledge source
📁 Clerk (clerk)
File system operations and shell commands:
fileSearch- Search files by glob patternfileSummary- Get AI summary of file contentfileIndex- Index files into knowledge basefileRead- Read file contentsfileEdit- Edit file with find/replacefileCreate- Create new filefileCopy- Copy filefileMove- Move/rename filefileDelete- Delete filefileStats- Get file metadatafileAttach- Attach file to messagetextSearch- Search file contents with regexdirCreate- Create directorydirSummary- Summarize directory contentsshell- Execute shell commands
👤 Secretary (secretary)
User preferences and assistant management:
assistantSwitch- Switch to different assistantassistantUpdate- Update assistant promptassistantAdd- Create new assistantmemoryList- List user memoriesmemoryUpdate- Update user memories
🏗️ Architect (architect)
Custom data type system:
typeList- List all custom typestypeInfo- Get type definitiontypeCreate- Define new data typetypeUpdate- Update type definitiontypeDelete- Delete typetypeImport- Import type from JSON schema
🎨 Artist (artist)
Image generation and analysis:
imageGenerate- Generate images from textimageEdit- Edit existing imagesimageAnalyze- Analyze image with vision AIimageDescribe- Get detailed image descriptionimageFind- Search generated imagesimageAttach- Attach image to message
🌐 Internet (internet)
Web operations:
webSearch- Search the web (via Tavily)webGetPage- Fetch and extract page contentwebApiCall- Make HTTP API requests
💾 DBA (dba)
Data record management:
dataIndex- Index data records into knowledge basedataImport- Import data from filesdataSearch- Semantic search over data recordsdataGet- Get specific data recorddbaQuery- Query data with filters and sorting
🔧 Utility (always available)
Core system tools:
getOperationOutput- Retrieve truncated operation outputabout- Information about Cletusretool- Switch toolsets or enable adaptive modehypothetical- Switch to restrictive mode for explorationask- Ask user multiple-choice questions with special UI
Configuration
Cletus stores its data in ~/.cletus/:
~/.cletus/
├── config.json # User settings, API keys, assistants
├── knowledge.json # Vector embeddings for semantic search
├── chats/ # Chat history
│ ├── {chat-id}.json
│ └── ...
├── data/ # Custom data records
│ ├── {type-name}.json
│ └── ...
└── images/ # Generated and edited imagesProvider Configuration
Cletus supports multiple AI providers:
- OpenAI (For all model types)
- OpenRouter (For chat models)
- Replicate (For image generation & editing primarily)
- AWS (For chat models)
- Tavily (For web search)
Common environment variables & AWS profiles are auto-detected
Model Selection
In the settings you can configure what models you want to use for each behavior.
Autonomous Mode
You choose how autonomous Cletus is - either automatically performing certain operations or asking for approval.
Custom Assistants
Cletus comes with built-in assistant personas:
- Gollum - Speaks like Gollum from LOTR (helpful but tricksy)
- Harry Potter - Adds magical spell casting to responses
- Sherlock Holmes - Analytical and deductive reasoning style
- Comic - Makes jokes while helping
Create your own:
You: Create an assistant named "Poet" that responds in verse
Cletus: I'll create that assistant...
[Uses assistant_add tool]Switch assistants mid-chat:
You: Switch to Sherlock Holmes
Cletus: Switching assistant...
[Uses assistant_switch tool]Advanced Features
Custom Data Types
Define structured data with validation:
Semantic Search
Files, data records, and user memories are automatically embedded and searchable:
- Full-text semantic search across all knowledge
- Source filtering (user memories, specific files, data types)
- Relevant context retrieval for AI responses
File Intelligence
Supported file types:
- Documents: PDF, DOCX, XLSX, TXT, MD, JSON, CSV
- Images: PNG, JPG, GIF, BMP, WEBP
- Archives: ZIP (auto-extraction and indexing)
- Code: Any text-based code files
Operations:
- AI-generated summaries
- Semantic indexing and search
- Content extraction (text, images, tables)
- OCR for images in documents
- Image description and analysis
"No provider configured"
Add at least one provider in settings or edit ~/.cletus/config.json to include API keys.
"Tavily API key required"
Web search requires a Tavily API key. Get one at tavily.com and add it in settings.
"Model not found"
Check that your configured models are available for your provider. See provider documentation for available models.
Chat history missing
Chat files are stored in ~/.cletus/chats/. If they're deleted, history is lost. Consider backing up this directory.
Large knowledge base
The knowledge base (~/.cletus/knowledge.json) grows as you index files and data. You can delete specific sources using the knowledge_delete tool.
Development
Project Structure
packages/cletus/
├── src/
│ ├── agents/ # AI agent definitions
│ ├── components/ # React/Ink UI components
│ ├── helpers/ # Utility functions
│ ├── operations/ # Tool operation implementations
│ ├── tools/ # Tool definitions
│ ├── ai.ts # AI setup and configuration
│ ├── chat.ts # Chat management
│ ├── config.ts # Configuration handling
│ ├── data.ts # Data storage
│ ├── knowledge.ts # Knowledge base
│ ├── schemas.ts # Zod schemas
│ └── index.tsx # Entry point
├── docs/ # Additional documentation
├── dist/ # Built files
├── package.json
├── tsconfig.json
└── README.mdAdding a New Tool
- Add to schemas - Update
OperationKindSchemainschemas.ts - Define tool - Add tool definition in
tools/{agent}.ts - Implement operation - Add implementation in
operations/{agent}.tsx
Example:
// 1. schemas.ts
export const OperationKindSchema = z.enum([
// ...
'my_new_tool',
]);
// 2. tools/clerk.ts
const myNewTool = ai.tool({
name: 'my_new_tool',
description: 'Does something useful',
instructions: `Use this to...`,
schema: z.object({
input: z.string().describe('The input'),
}),
call: async (input, _, ctx) =>
ctx.ops.handle({ type: 'my_new_tool', input }, ctx),
});
// 3. operations/clerk.tsx
export const myNewTool = operationOf<
{ input: string },
{ result: string }
>({
mode: 'read',
signature: 'my_new_tool(input: string)',
status: (input) => `Processing: ${input.input}`,
analyze: async ({ input }, { cwd }) => ({
analysis: `This will process: ${input.input}`,
doable: true,
}),
do: async ({ input }, ctx) => {
const result = await doSomething(input.input);
return { result };
},
render: (op, ai, showInput, showOutput) => renderOperation(
op,
`MyNewTool("${op.input.input}")`,
(op) => op.output ? `Result: ${op.output.result}` : null,
showInput, showOutput
),
});Building
# Clean build
npm run clean
npm run build
# Type checking
npm run typecheckContributing
Contributions are welcome! Please see the main @aeye repository for contribution guidelines.
License
GPL-3.0 © ClickerMonkey
Related Packages
- @aeye/ai - Core AI library
- @aeye/core - Shared utilities and types
- @aeye/models - Model registry and definitions
- @aeye/openai - OpenAI provider
- @aeye/openrouter - OpenRouter provider
- @aeye/replicate - Replicate provider
- @aeye/aws - AWS Bedrock provider
