Skip to content
Closed

main #228

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
10 changes: 10 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -39,5 +39,15 @@ docs/.vitepress/dist/
# Claude Code worktrees
.claude/worktrees/

# Claude Code local settings
.claude/settings.local.json

# Managed worktree MCP fallback config
/.mcp.json

# Local Cargo cache config
.cargo/config.local.toml

# Test result artifacts with hardcoded local paths
TEST_RESULTS*.md
/crates/llm-cli-wrapper/TEST_RESULTS*.md
181 changes: 181 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,181 @@
# Contributing to Animus

Thank you for your interest in contributing to Animus! This document provides guidelines and instructions for contributing.

## Getting Started

### Prerequisites

- **Rust**: Animus is a Rust-only project. Install Rust via [rustup](https://rustup.rs/).
- **Node.js** (optional, for web UI work): v18+
- **At least one AI coding CLI** for testing agent integration:
- `@anthropic-ai/claude-code` (recommended)
- `@openai/codex`
- `@google/gemini-cli`

### Building Locally

```bash
# Clone the repository
git clone https://github.com/samishukri/animus.git
cd animus

# Build the project
cargo build

# Run tests
cargo test

# Format and lint
cargo fmt
cargo clippy
```

## Development Workflow

### Before You Start

1. **Check existing issues and PRs** to avoid duplicate work
2. **Fork the repository** on GitHub
3. **Create a feature branch** from `main`:
```bash
git checkout -b feature/your-feature-name
```

### Making Changes

- Keep changes focused and minimal — one feature per PR
- Follow the existing code style (Rust conventions)
- Add tests for new functionality
- Update documentation if your changes affect user-facing behavior
- Reference the [CLAUDE.md](./CLAUDE.md) file for architecture landmarks and verification checks

### Code Organization

The workspace is organized into functional crates:

- **Core orchestration**: `orchestrator-cli`, `orchestrator-core`, `orchestrator-config`, `orchestrator-store`
- **Runtime & agents**: `agent-runner`, `llm-cli-wrapper`, `workflow-runner-v2`, `orchestrator-daemon-runtime`
- **Web & API**: `orchestrator-web-server`, `orchestrator-web-api`
- **Utilities**: `orchestrator-providers`, `orchestrator-git-ops`, `orchestrator-notifications`, `protocol`

### Running Tests

```bash
# Test a specific crate
cargo test -p crate-name

# Run all tests
cargo test --workspace

# Run web UI tests
cd crates/orchestrator-web-server/web-ui
npm test
```

### Verifying Your Changes

Before submitting a PR, verify your changes don't break anything:

```bash
# Format check
cargo fmt --check

# Lint check
cargo clippy --all-targets

# Test all crates
cargo test --workspace

# Web UI checks (if relevant)
cd crates/orchestrator-web-server/web-ui
npm run typecheck
npm run build
```

## Submitting Changes

### Pull Request Process

1. **Push your branch** to your fork:
```bash
git push origin feature/your-feature-name
```

2. **Create a Pull Request** with a clear title and description:
- Link any related issues using `Closes #123`
- Explain *why* the change is needed, not just *what* changed
- Include testing notes if applicable

3. **Respond to feedback** from reviewers and update the PR as needed

4. **Ensure CI passes** — all automated checks must pass before merging

### Commit Guidelines

- Write clear, descriptive commit messages
- Use conventional commit format when possible: `type(scope): description`
- `feat`: new feature
- `fix`: bug fix
- `refactor`: code restructuring
- `test`: test additions or updates
- `docs`: documentation updates
- `chore`: maintenance tasks

Example:
```
feat(cli): add --dry-run flag to task create command

Allows users to preview task creation without persisting state.
```

## Documentation

- **CLI changes**: Update `docs/reference/cli/index.md`
- **MCP tools**: Update `docs/reference/mcp-tools.md` and `docs/guides/agents.md`
- **Configuration**: Update relevant docs in `docs/reference/`
- **README**: Keep it current with major feature additions

## Code Standards

### Rust Style

- Use `cargo fmt` for formatting — this is enforced in CI
- Follow Clippy suggestions — address warnings before submitting
- Write idiomatic Rust code

### Web UI Standards (TypeScript/React)

- Use React 18 best practices
- Follow component patterns established in the codebase
- Test changes with responsive and accessibility checks

### State Management

- Treat AO-managed state (in `~/.ao/`) as immutable except through CLI commands
- Use service APIs rather than direct file manipulation
- Preserve backward compatibility where possible

## Reporting Bugs

When reporting bugs, please include:

1. **Environment**: OS, Rust version, Animus version
2. **Steps to reproduce**: Clear, minimal example
3. **Expected behavior**: What should happen
4. **Actual behavior**: What actually happens
5. **Logs**: Output of `animus doctor` and relevant error messages

## Questions or Feedback?

- **Discussions**: Use GitHub Discussions for questions
- **Issues**: File issues for bugs or feature requests
- **Security**: For security issues, email security@example.com (do not open public issues)

## License

By contributing to Animus, you agree that your contributions will be licensed under the same [Elastic License 2.0 (ELv2)](LICENSE) as the project.

---

Thank you for contributing to Animus!
76 changes: 38 additions & 38 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
<div align="center">

![header](https://capsule-render.vercel.app/api?type=waving&color=0:0d1117,50:161b22,100:1f6feb&height=200&section=header&text=AO&fontSize=90&fontColor=f0f6fc&animation=fadeIn&fontAlignY=35&desc=Autonomous%20Agent%20Orchestrator&descAlignY=55&descSize=22&descColor=8b949e)
![header](https://capsule-render.vercel.app/api?type=waving&color=0:0d1117,50:161b22,100:1f6feb&height=200&section=header&text=Animus&fontSize=90&fontColor=f0f6fc&animation=fadeIn&fontAlignY=35&desc=Autonomous%20Agent%20Orchestrator&descAlignY=55&descSize=22&descColor=8b949e)

<br/>

[![Typing SVG](https://readme-typing-svg.demolab.com?font=JetBrains+Mono&weight=500&size=20&duration=3000&pause=1500&color=58A6FF&center=true&vCenter=true&multiline=true&repeat=true&random=false&width=700&height=80&lines=Define+your+engineering+team+as+YAML.;Dispatch+tasks+to+AI+agents+across+isolated+worktrees.;Review%2C+merge%2C+and+ship+%E2%80%94+while+you+sleep.)](https://github.com/launchapp-dev/ao)
[![Typing SVG](https://readme-typing-svg.demolab.com?font=JetBrains+Mono&weight=500&size=20&duration=3000&pause=1500&color=58A6FF&center=true&vCenter=true&multiline=true&repeat=true&random=false&width=700&height=80&lines=Define+your+engineering+team+as+YAML.;Dispatch+tasks+to+AI+agents+across+isolated+worktrees.;Review%2C+merge%2C+and+ship+%E2%80%94+while+you+sleep.)](https://github.com/samishukri/animus)

<br/>
<br/>
Expand All @@ -24,7 +24,7 @@
## Install

```bash
curl -fsSL https://raw.githubusercontent.com/launchapp-dev/ao/main/install.sh | bash
curl -fsSL https://raw.githubusercontent.com/samishukri/animus/main/install.sh | bash
```

The upstream installer currently targets macOS. On Linux and Windows, use a release archive or build from source.
Expand All @@ -34,10 +34,10 @@ The upstream installer currently targets macOS. On Linux and Windows, use a rele

```bash
# Specific version
AO_VERSION=v0.0.11 curl -fsSL https://raw.githubusercontent.com/launchapp-dev/ao/main/install.sh | bash
ANIMUS_VERSION=v0.0.11 curl -fsSL https://raw.githubusercontent.com/samishukri/animus/main/install.sh | bash

# Custom directory
AO_INSTALL_DIR=/usr/local/bin curl -fsSL https://raw.githubusercontent.com/launchapp-dev/ao/main/install.sh | bash
ANIMUS_INSTALL_DIR=/usr/local/bin curl -fsSL https://raw.githubusercontent.com/samishukri/animus/main/install.sh | bash
```

</details>
Expand All @@ -57,15 +57,15 @@ npm install -g @google/gemini-cli # Gemini

---

## What is AO?
## What is Animus?

AO turns a single YAML file into an autonomous software delivery pipeline.
Animus turns a single YAML file into an autonomous software delivery pipeline.

You define agents, wire them into phases, compose phases into workflows, schedule everything with cron — and AO's daemon handles the rest: dispatching tasks to AI agents in isolated git worktrees, managing quality gates, and merging the results.
You define agents, wire them into phases, compose phases into workflows, schedule everything with cron — and Animus's daemon handles the rest: dispatching tasks to AI agents in isolated git worktrees, managing quality gates, and merging the results.

```
┌──────────────────────────────────────────────────┐
AO Daemon (Rust)
Animus Daemon (Rust) │
│ │
┌────────┐ │ ┌───────────┐ ┌───────────┐ ┌────────┐ │ ┌────────┐
│ Tasks │───▶│───▶│ Dispatch │───▶│ Agents │───▶│ Phases │─│──▶│ PRs │
Expand All @@ -86,13 +86,13 @@ You define agents, wire them into phases, compose phases into workflows, schedul

```bash
cd your-project # any git repo
ao doctor # check prerequisites
ao setup # initialize .ao/
animus doctor # check prerequisites
animus setup # initialize .ao/

ao task create --title "Add rate limiting" --task-type feature --priority high
ao workflow run --task-id TASK-001 # run once
animus task create --title "Add rate limiting" --task-type feature --priority high
animus workflow run --task-id TASK-001 # run once

ao daemon start --autonomous # or go fully autonomous
animus daemon start --autonomous # or go fully autonomous
```

---
Expand All @@ -112,7 +112,7 @@ agents:
default:
model: claude-sonnet-4-6
tool: claude
mcp_servers: ["ao", "context7"]
mcp_servers: ["animus", "context7"]

work-planner:
system_prompt: |
Expand Down Expand Up @@ -198,7 +198,7 @@ schedules:

## The Full Agent Team

AO doesn't run one agent. It runs an **entire product organization**:
Animus doesn't run one agent. It runs an **entire product organization**:

```
┌─────────────────────────────────────────────────────────────────┐
Expand Down Expand Up @@ -264,11 +264,11 @@ Every task gets its own git worktree. Agents work in parallel on separate branch

## Claude Code Integration

Install [**AO Skills**](https://github.com/launchapp-dev/ao-skills) for deep AO integration inside Claude Code:
Install [**Animus Skills**](https://github.com/samishukri/animus-skills) for deep Animus integration inside Claude Code:

```bash
git clone https://github.com/launchapp-dev/ao-skills.git ~/ao-skills
claude --plugin-dir ~/ao-skills
git clone https://github.com/samishukri/animus-skills.git ~/animus-skills
claude --plugin-dir ~/animus-skills
```

<table>
Expand All @@ -279,7 +279,7 @@ claude --plugin-dir ~/ao-skills

| Command | What it does |
|:---|:---|
| `/setup-ao` | Initialize AO in your project |
| `/setup-animus` | Initialize Animus in your project |
| `/getting-started` | Install, concepts, first task |
| `/workflow-authoring` | Write custom YAML workflows |
| `/pack-authoring` | Build workflow packs |
Expand All @@ -298,7 +298,7 @@ claude --plugin-dir ~/ao-skills
| `daemon-operations` | Daemon monitoring and troubleshooting |
| `workflow-patterns` | Patterns from 150+ autonomous PRs |
| `agent-personas` | PO, architect, auditor agents |
| `mcp-tools` | Complete `ao.*` tool reference |
| `mcp-tools` | Complete `animus.*` tool reference |

</td>
</tr>
Expand All @@ -309,25 +309,25 @@ claude --plugin-dir ~/ao-skills
## CLI

```
ao task Create, list, update, prioritize tasks
ao workflow Run and manage multi-phase workflows
ao daemon Start/stop the autonomous scheduler
ao queue Inspect and manage the dispatch queue
ao agent Control agent runner processes
ao output Stream and inspect agent output
ao doctor Health checks and auto-remediation
ao setup Interactive project initialization
ao requirements Manage product requirements
ao mcp Start AO as an MCP server
ao web Launch the embedded web dashboard
ao status Project overview at a glance
animus task Create, list, update, prioritize tasks
animus workflow Run and manage multi-phase workflows
animus daemon Start/stop the autonomous scheduler
animus queue Inspect and manage the dispatch queue
animus agent Control agent runner processes
animus output Stream and inspect agent output
animus doctor Health checks and auto-remediation
animus setup Interactive project initialization
animus requirements Manage product requirements
animus mcp Start Animus as an MCP server
animus web Launch the embedded web dashboard
animus status Project overview at a glance
```

---

## Architecture

AO is a Rust-only workspace with 17 crates. The major crates are:
Animus is a Rust-only workspace with 17 crates. The major crates are:

- `orchestrator-cli` - CLI commands and dispatch
- `orchestrator-core` - services, state, and workflow lifecycle
Expand Down Expand Up @@ -386,17 +386,17 @@ This project is licensed under the [Elastic License 2.0 (ELv2)](LICENSE). You ma
**Update**

```bash
curl -fsSL https://raw.githubusercontent.com/launchapp-dev/ao/main/install.sh | bash
curl -fsSL https://raw.githubusercontent.com/samishukri/animus/main/install.sh | bash
```

**Uninstall**

```bash
rm -f ~/.local/bin/ao \
rm -f ~/.local/bin/animus \
~/.local/bin/agent-runner \
~/.local/bin/llm-cli-wrapper \
~/.local/bin/ao-oai-runner \
~/.local/bin/ao-workflow-runner
~/.local/bin/animus-oai-runner \
~/.local/bin/animus-workflow-runner
```

<br/>
Expand Down
Loading
Loading