Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,21 @@ jobs:
run: pnpm install
- name: Run typecheck
run: pnpm run typecheck
prettier:
name: Prettier
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
version: 10
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version-file: .nvmrc
cache: "pnpm"
- name: Install dependencies
run: pnpm install
- name: Run prettier check
run: pnpm run lint
1 change: 1 addition & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
pnpm-lock.yaml
2 changes: 1 addition & 1 deletion .swcrc
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,4 @@
}
}
}
}
}
17 changes: 14 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
<a href="https://athenalab.ai/"><img src="https://img.shields.io/badge/Website-AthenaLab.AI-blue" alt="Website"></a>
</div>

**Athena** is a production-ready general AI agent built to *do*, not just *think*. It bridges insight with execution, helping you move from idea to results effortlessly.
**Athena** is a production-ready general AI agent built to _do_, not just _think_. It bridges insight with execution, helping you move from idea to results effortlessly.

Some examples of what Athena can do:

Expand Down Expand Up @@ -47,23 +47,27 @@ With all the tools it has, Athena is capable of:
## 🚀 Quick Start

1. Clone the repository:

```bash
git clone https://github.com/Athena-AI-Lab/athena-core.git
```

2. [Install pnpm](https://pnpm.io/installation) (if not already installed):

```bash
npm install -g pnpm
```

3. Install project dependencies:

```bash
cd athena-core
pnpm i
pnpx playwright install
```

4. Copy the example config file:

```bash
cp configs/config.yaml-example configs/config.yaml
```
Expand Down Expand Up @@ -99,6 +103,7 @@ plugins:
> For a complete list of plugins and detailed configuration options, please refer to the [Configuration Guide](docs/configuration.md). See [Cerebrum](docs/configuration.md#cerebrum) section for best practices on selecting the right model for your use case.

6. Launch Athena:

```bash
pnpm start
```
Expand All @@ -117,25 +122,30 @@ Trust us: the AI will probably do a better job explaining it than we ever could.

## 🗓️ Roadmap

Our mission is to realize **human-level intelligence**, or *AGI*, by evolving Athena into a truly autonomous and capable agent. Here's a more detailed roadmap of what we're working on:
Our mission is to realize **human-level intelligence**, or _AGI_, by evolving Athena into a truly autonomous and capable agent. Here's a more detailed roadmap of what we're working on:

- [ ] **Autonomous Code Writing**

- Enable Athena to iteratively write and improve its own plugins

- [ ] **Robust Browser Automation**

- Improve reliability and fault tolerance in headless and headful modes
- Add advanced DOM element parsing and interaction strategies

- [ ] **Context Management Improvements**

- Adjust prompt context windows for different LLMs
- Implement context summarization for out-of-window context

- [ ] **Long-Term Memory with RAG**

- Set up vector database integration for persistent knowledge
- Enable memory recall across sessions and tasks
- Support user-specific long-term context embedding and retrieval

- [ ] **Image and Video Model Expansion**

- Integrate support for more image and video generation models
- Enable multimodal workflows that combine text, image, and video reasoning

Expand All @@ -148,7 +158,7 @@ Our mission is to realize **human-level intelligence**, or *AGI*, by evolving At

We welcome contributions from everyone — whether you're fixing a typo, suggesting a feature, or building a whole new plugin!

Athena is a community-driven project, and we believe in building great tools *together*. Here's how you can help:
Athena is a community-driven project, and we believe in building great tools _together_. Here's how you can help:

### 💡 Got an Idea?

Expand All @@ -166,6 +176,7 @@ Open a [GitHub Issue](https://github.com/Athena-AI-Lab/athena-core/issues) and l
### 🧪 Suggest Tests or Improvements

Not into code? You can still help by:

- Testing features and reporting issues
- Improving documentation
- Sharing Athena with others and providing feedback
Expand Down
146 changes: 73 additions & 73 deletions docs/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ Plugins are the core components of Athena. Each plugin has its own configuration
The `browser` plugin allows Athena to control a web browser via Playwright.

```yaml
browser:
headless: true
browser:
headless: true
```

- `headless`: Whether to run the browser in headless mode. If set to `true`, the browser will not be visible.
Expand All @@ -42,43 +42,43 @@ The `cerebrum` plugin is the main plugin for Athena. It handles event receiving,
Here is a configuration example for the cerebrum plugin using GPT-4o:

```yaml
cerebrum:
base_url: https://api.openai.com/v1
api_key: sk-proj-your-openai-api-key
model: gpt-4o
temperature: 0.5
image_supported: true
max_prompts: 50
max_event_strlen: 65536
max_tokens: 16384
cerebrum:
base_url: https://api.openai.com/v1
api_key: sk-proj-your-openai-api-key
model: gpt-4o
temperature: 0.5
image_supported: true
max_prompts: 50
max_event_strlen: 65536
max_tokens: 16384
```

However, Athena performs best with DeepSeek V3 (not 0324). The web app version of Athena uses DeepSeek V3 as its cerebrum model. Here is an example configuration for DeepSeek V3:

```yaml
cerebrum:
base_url: https://openrouter.ai/api/v1
api_key: sk-your-openrouter-api-key
model: deepseek/deepseek-chat
temperature: 0.5
image_supported: false
max_prompts: 50
max_event_strlen: 65536
max_tokens: 16384
cerebrum:
base_url: https://openrouter.ai/api/v1
api_key: sk-your-openrouter-api-key
model: deepseek/deepseek-chat
temperature: 0.5
image_supported: false
max_prompts: 50
max_event_strlen: 65536
max_tokens: 16384
```

Although more expensive, Athena can perform even better with Claude 3.7 Sonnet. Here is an example configuration:

```yaml
cerebrum:
base_url: https://api.anthropic.com/v1
api_key: sk-ant-api03-your-anthropic-api-key
model: claude-3-7-sonnet-latest
temperature: 0.5
image_supported: false
max_prompts: 50
max_event_strlen: 65536
max_tokens: 16384
cerebrum:
base_url: https://api.anthropic.com/v1
api_key: sk-ant-api03-your-anthropic-api-key
model: claude-3-7-sonnet-latest
temperature: 0.5
image_supported: false
max_prompts: 50
max_event_strlen: 65536
max_tokens: 16384
```

- `base_url`: The base URL of the API endpoint.
Expand All @@ -95,29 +95,29 @@ Although more expensive, Athena can perform even better with Claude 3.7 Sonnet.
Enable `cli-ui` to interact with Athena via the command line. If not needed, you can remove it from the `plugins` section.

```yaml
cli-ui:
cli-ui:
```

### Clock

The `clock` plugin provides time awareness and scheduling. When enabled, Athena can get the current date and time, and manage timers and alarms.

```yaml
clock:
clock:
```

### Discord

Enable `discord` for Athena to send and receive messages from Discord.

```yaml
discord:
bot_token: your-discord-bot-token
allowed_channel_ids:
- "1234567890"
- "9876543210"
admin_channel_ids: []
log_channel_ids: []
discord:
bot_token: your-discord-bot-token
allowed_channel_ids:
- "1234567890"
- "9876543210"
admin_channel_ids: []
log_channel_ids: []
```

- `bot_token`: The Discord bot token.
Expand All @@ -130,21 +130,21 @@ Enable `discord` for Athena to send and receive messages from Discord.
Enable `file-system` to allow Athena to access your local file system. Athena will be able to read and write files.

```yaml
file-system:
file-system:
```

### HTTP

Enable `http` for Athena to send HTTP requests, search the web via Jina Search or Exa Search, and download files from the Internet.

```yaml
http:
jina: # Optional Jina config
base_url: https://s.jina.ai
api_key: your-jina-api-key
exa: # Optional Exa config
base_url: https://api.exa.ai # Optional, defaults to this
api_key: your-exa-api-key # Required if using Exa
http:
jina: # Optional Jina config
base_url: https://s.jina.ai
api_key: your-jina-api-key
exa: # Optional Exa config
base_url: https://api.exa.ai # Optional, defaults to this
api_key: your-exa-api-key # Required if using Exa
```

- `jina`: Configuration for [Jina Search](https://jina.ai/). (Optional)
Expand All @@ -159,24 +159,24 @@ Enable `http` for Athena to send HTTP requests, search the web via Jina Search o
Enable `llm` for Athena to chat with other language models and generate images.

Since only a single OpenAI endpoint can be configured currently, it's recommended to use a service like LiteLLM proxy to route requests to different language models. OpenRouter is another option, though it doesn't support image generation.

```yaml
llm:
base_url: https://openrouter.ai/api/v1
api_key: sk-or-v1-your-openrouter-api-key
models:
chat:
- name: openai/gpt-4o
desc: GPT-4o is good at general purpose tasks. Supports image input. Whenever you receive an image and need to understand it, pass it to this model using the image arg.
- name: openai/o3-mini
desc: O3 Mini is good at deep thinking and planning. Whenever you need to plan something complicated or solve complex math problems, use this model.
- name: anthropic/claude-3.7-sonnet
desc: Claude 3.7 Sonnet is good at writing code. Whenever you need to write code, use this model.
- name: perplexity/sonar
desc: Perplexity can access the Internet. Whenever you need to search the Internet, use this model.
image:
- name: openai/dall-e-3 # OpenRouter doesn't support image generation
desc: DALL-E 3 is good at generating images. Whenever you are requested to generate images, use this model.
llm:
base_url: https://openrouter.ai/api/v1
api_key: sk-or-v1-your-openrouter-api-key
models:
chat:
- name: openai/gpt-4o
desc: GPT-4o is good at general purpose tasks. Supports image input. Whenever you receive an image and need to understand it, pass it to this model using the image arg.
- name: openai/o3-mini
desc: O3 Mini is good at deep thinking and planning. Whenever you need to plan something complicated or solve complex math problems, use this model.
- name: anthropic/claude-3.7-sonnet
desc: Claude 3.7 Sonnet is good at writing code. Whenever you need to write code, use this model.
- name: perplexity/sonar
desc: Perplexity can access the Internet. Whenever you need to search the Internet, use this model.
image:
- name: openai/dall-e-3 # OpenRouter doesn't support image generation
desc: DALL-E 3 is good at generating images. Whenever you are requested to generate images, use this model.
```

- `base_url`: The base URL of the API endpoint.
Expand All @@ -194,37 +194,37 @@ Since only a single OpenAI endpoint can be configured currently, it's recommende
Enable `python` for Athena to run inline Python code or Python scripts. This also enables Athena to install pip packages.

```yaml
python:
python:
```

### Shell

Enable `shell` for Athena to run shell commands.

```yaml
shell:
shell:
```

### Short-Term Memory

Enable `short-term-memory` for Athena to manage a basic task list.

```yaml
short-term-memory:
short-term-memory:
```

### Telegram

Enable `telegram` for Athena to send and receive messages from Telegram.

```yaml
telegram:
bot_token: your-telegram-bot-token
allowed_chat_ids:
- 1234567890
- 9876543210
admin_chat_ids: []
log_chat_ids: []
telegram:
bot_token: your-telegram-bot-token
allowed_chat_ids:
- 1234567890
- 9876543210
admin_chat_ids: []
log_chat_ids: []
```

- `bot_token`: The Telegram bot token.
Expand Down
5 changes: 4 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,9 @@
"build": "npm run clean && npm run fast-build",
"fast-build": "swc src -d dist --strip-leading-paths",
"clean": "rm -rf dist",
"typecheck": "tsc --noEmit"
"typecheck": "tsc --noEmit",
"lint": "prettier --check .",
"lint:fix": "prettier --write ."
},
"repository": {
"type": "git",
Expand Down Expand Up @@ -57,6 +59,7 @@
"@types/node": "^22.14.1",
"@types/node-telegram-bot-api": "^0.64.7",
"@types/ws": "^8.5.14",
"prettier": "^3.5.3",
"tsx": "^4.19.3",
"typescript": "^5.7.3"
}
Expand Down
Loading