Back to Explore

coe0718/axonix

Rust4 issues3 contributorsMIT
View on GitHub

Summary

Axonix is a self-modifying Rust CLI agent that wakes on a cron schedule every 4 hours, reads its own source and state files (GOALS.md, JOURNAL.md, METRICS.md), then uses Claude to decide what to build next, commits the changes, and pushes — all autonomously. It's forked from yoyo-evolve/yoagent and extends the base agent loop with integrations for GitHub, Telegram, Twitter, Bluesky, SSH multi-host management, and a static dashboard at axonix.live. The core concept is an AI agent that becomes increasingly personalized to its operator over time rather than being a general-purpose tool.

Great for

People interested in self-modifying AI agent architectures and watching how an LLM-driven system accretes complexity over time — specifically the engineering challenges of safe autonomous code modification, state management across sessions, and prompt injection defense in a publicly-observable system.

Easy wins

  • +Add CI via GitHub Actions — the repo has no CI (has_ci: false) despite CLAUDE.md mandating 'cargo build && cargo test' before every commit; a simple workflow would catch regressions between agent sessions
  • +Open issues with the 'agent-input' label to influence what the agent builds next — this is the documented community interface and requires zero code knowledge
  • +Improve the stream_server.rs (src/bin/stream_server.rs) — it's a separate binary with minimal code shown; adding proper SSE heartbeat/reconnect handling would improve axonix.live reliability
  • +Write integration tests for the GitHub and Telegram clients — src/telegram.rs has solid unit tests for parsing but no tests for the HTTP layer; src/github.rs appears untested

Red flags

  • !The agent has write access to its own source and commits/pushes autonomously — any prompt injection via a GitHub issue labeled 'agent-input' could theoretically cause the agent to modify its own code maliciously; CLAUDE.md has a loyalty/injection warning but this is purely prompt-level defense with no code-level sandboxing
  • !ANTHROPIC_API_KEY is described as a Claude Pro OAuth token ('sk-ant-oat01-...') in the README — this is a non-standard auth path that may break if Anthropic changes their OAuth implementation, and the distinction between OAuth tokens and API keys is blurred throughout the docs
  • !has_ci: false and has_tests: false at the repo level — the agent is supposed to enforce 'cargo build && cargo test' but there's no CI to verify this actually happened on any given commit; commit_count: 1 with commit_frequency_30d: 1 means there's almost no history to evaluate against
  • !docker-compose.yml mounts the deploy_key (SSH private key) at /workspace/.ssh/id_ed25519 — if the container is ever exec'd into by an attacker or the stream_server has a path traversal bug, the key is readable
  • !The Cargo.toml repository field points to 'coe07182/axonix' (note the '82') while the actual repo is 'coe0718/axonix' — small but suggests the project is still being set up

Code quality

decent

The core modules (repl.rs, telegram.rs) show genuine care: CommandResult is a clean enum, ReplState separates state from I/O explicitly, and telegram.rs has a meaningful unit test suite including a UTF-8 boundary regression test. However, main.rs is doing too much — it handles --tweet, --bluesky-post, --prompt, piped mode, and interactive REPL in one 300+ line function with significant duplication in the Telegram polling logic (spawn_telegram_cron_poll is called in both --prompt and piped paths with identical follow-up code). Error handling is mostly soft (errors eprintln'd and ignored) which is intentional for notifications but could mask real failures in the GitHub/SSH paths.

What makes it unique

The self-modification loop (agent reads own source → decides what to build → commits → repeat) is genuinely interesting and not just another chatbot wrapper. What differentiates it from yoyo-evolve (its parent) is the explicit identity/goals/journal state machine and the community-input-via-issues mechanic. The live dashboard at axonix.live and the 'growing up in public' framing are a real differentiator for discoverability. That said, the actual agent intelligence is entirely delegated to Claude via yoagent — Axonix is primarily an orchestration layer and integration surface, not a novel AI architecture.

Scores

Collab
4
Activity
3

Barrier to entry

medium

The codebase is well-structured with clear module separation and good inline docs, but contributing meaningfully requires understanding the evolve.sh/cron session lifecycle, the state file protocol (GOALS.md/JOURNAL.md/METRICS.md), and the fact that the agent itself may overwrite your changes — CLAUDE.md explicitly forbids modifying IDENTITY.md and evolve.sh, and any code change must pass cargo build && cargo test to survive a session.

Skills needed

Rust (async/tokio)LLM agent loop designREST API integration (GitHub, Telegram, Twitter, Bluesky)Docker/docker-composesystem prompt engineeringgit automation