Getting Started
Welcome! Loom is in active development (Phase 4) and contributions are welcome.Prerequisites
- Elixir 1.18+ with OTP 27
- Erlang/OTP 27+
- Git 2.0+
- An LLM API key for testing (Anthropic or OpenAI recommended)
Clone and Setup
http://localhost:4200.
Project Structure
Development Workflow
Running Tests
- Session management
- Tool execution
- Decision graph operations
- Repo intelligence
- Permission system
- LiveView components
- CLI rendering
Code Formatting
Loom uses the standard Elixir formatter with Phoenix and Ecto plugins:.formatter.exs configuration:
Running the Dev Server
- LiveReload — Browser refreshes on file changes
- LiveDashboard —
http://localhost:4200/dashboard - Hot code reloading — Update modules without restart
Database Management
Code Standards
Style Guide
Follow the Elixir Style Guide:- Use 2 spaces for indentation
- Max line length: 120 characters
- Module documentation with
@moduledoc - Function documentation with
@doc - Typespec for public functions
- Pattern match in function heads when possible
Naming Conventions
- Modules:
PascalCase(e.g.,Loom.Session) - Functions:
snake_case(e.g.,send_message/2) - Variables:
snake_case(e.g.,session_id) - Atoms:
snake_case(e.g.,:thinking) - GenServer names: Via Registry (e.g.,
{:via, Registry, {Loom.SessionRegistry, session_id}})
Module Documentation
Every module should have a@moduledoc:
Function Documentation
Public functions should have@doc and @spec:
Error Handling
Use tagged tuples for errors:with for error propagation:
Testing Standards
Use ExUnit with descriptive test names:Git Workflow
- Create a feature branch
- Make focused commits
- Keep commits atomic
- Push and open PR
Commit Message Format
Add file_watch tool for detecting file changesFix session crash when LLM times outRefactor context window to use token budgetsUpdate decision graph to track confidence scores
Fix bugUpdate stuffWIPchanges
Adding New Features
Adding a New Tool
- Create the tool module
- Register in agent
- Add tests
- Document in docs/
Adding a New LiveView Component
- Create component module
- Add to workspace
- Add tests
Pull Request Process
- Ensure tests pass
- Update documentation
docs/.
- Open PR with clear description
- Respond to review feedback
- Squash commits if requested
Areas for Contribution
High Priority
- Tree-sitter integration — Replace regex symbol extraction with tree-sitter
- LSP diagnostics — Pull compiler errors into agent context
- MCP protocol — Expose Loom tools to VS Code/Cursor
- Agent swarms — Multi-agent coordination (see Swarm Design)
- Performance — Optimize context window, repo index, decision graph queries
Medium Priority
- Additional tools — Database query, API request, file watch
- Model providers — Add support for more LLM providers via req_llm
- UI enhancements — Keyboard shortcuts, dark mode toggle, mobile support
- Documentation — More examples, guides, video walkthroughs
Good First Issues
- Fix typos in documentation
- Add tests for edge cases
- Improve error messages
- Add examples to
LOOM.mdguide
Questions or Issues?
- Documentation: Check docs/
- Bugs: Open an issue on GitHub
- Features: Discuss in an issue first before implementing
- Help: Ask in GitHub Discussions
Code of Conduct
Be respectful, constructive, and welcoming. This is a technical project focused on building useful tools.License
By contributing, you agree that your contributions will be licensed under the MIT License.Thank you for contributing to Loom! Your efforts help build the future of AI-assisted coding on the BEAM.