Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

95 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Eva

shinji

A coding harness built in Elixir, inspired by tau.

Work in progress — things may move, break, and change.

under construction

Idea

Current ideas, subject to change.

Architecture

Eva is a distributed coding agent platform. It ships with a default terminal agent harness powered by ex_ratatui + BYO-FE, with a modular architecture that lets you swap out providers and frontends.

Feature Checklist

  • Distributed architecture
    • How do we discover & connect to Evas in different machines?
      • Tailscale?
        • Most of the work is already done(Security, Discovery & Connection)
        • Connections & Creds management
      • Iroh?
    • Splittable Architecture. Harness or API processes can live on another machines. or even tools.
      • Tool call to connected Evas.
    • At what point do we handle external node messages?
      • Split between:
        • Providers
        • Harness
  • Provider
    • Opencode go
    • LMStudio
    • Completions API
    • Handle envs & config
    • Responses API
    • Switch providers at runtime
  • Storage
    • Directory(sessions/index)
    • Move to sqlite?
  • Agent Harness
    • The agent loop
    • Handling distributed node messages
    • Context
      • Sessions
      • Memory
      • Compaction
      • Skills
      • Prompt templates
      • AGENTS.md
      • Diagnostics
    • Prompts
      • Follow-up
      • Queue
      • Assembling prompts
    • Tools
      • Tool calls
        • Approvals
        • Elixir native?
        • read
        • write
        • edit
        • bash
        • Q/A
        • Web search
          • Using exa MCP
          • Brave search API
        • Web fetch
          • Using exa MCP (responds in markdown)
          • In house (using finch/req) with multiple output format: markdown, html
            • JS rendered pages? Should be a lightweight implementation
    • Subagents
      • As an extension
      • Modes or Characters(?)(like amp)
        • Deep
        • Librarian
        • Oracle
    • UI agnostic commands layer
    • Extensions
    • MCP
      • As an extension
      • Support latest spec (it is basically REST)
      • Stdio
      • Http
      • Tool calls
      • System prompts
      • Resources
      • Notifications
      • Toggle servers on/off (per-session override or persisted to mcp.json)
      • Requests from MCPs
    • Ability to modify itself
      • With Hot reload?
    • Sharing(login?)
      • Atproto
        • PDS as sync layer(inspired by tiles.run)?
      • (Fun idea): Indieweb?
    • (Experiment): Explore with mob as distributed node connection?
  • TUI (ex_ratatui) + BYO-FE
    • Slash commands (/usage, /providers, /login, /logout, ...)
    • Pretty lil animations
  • catalogue.yml or something for list of providers
  • Sandboxing
  • Observability
    • Number of sessions, time taken, total token usage, failures etc.
  • Remote node connection cookie sharing
    • Make it secure. Pluggable service which nodes can consult to get a cookie?
  • Explore https://github.com/elixir-vibe/vibe for further stuff

What Sets It Apart

  • Distributed by default — designed for multi-node setups from the start.
  • Elixir-native — fault tolerance, hot code reloading, and concurrency via the BEAM.
  • BYO-FE — bring your own frontend; the default TUI is built with ex_ratatui but you can swap in anything.
  • Modular — providers, tools, and agents are pluggable components.

About

Agent harness in Elixir

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages