<div align="center">
M31A
터미널에 거주하는 자율 코딩 에이전트.
모델이 제안하고, 런타임이 결정한다.
CI
Release
License
Rust
Website
Website • Documentation • Quickstart • Architecture • Releases
</div>
M31A란 무엇인가?
M31A (M31 Autonomous)는 사용자의 터미널에 직접 거주하도록 처음부터 설계된 오픈 소스, Rust 네이티브 자율 코딩 에이전트입니다. 이 에이전트는 높은 수준의 소프트웨어 엔지니어링 목표를 받아 코드베이스를 검사하고, 의존성을 인식하는 실행 계획을 합성하며, 코드를 작성하고, 빌드 및 테스트 스위트를 실행하며, 컴파일러 실패를 진단하고, 사용자의 수용 기준(acceptance criteria)이 충족될 때까지 반복적으로 회귀(regressions)를 수정합니다.
누가 사용하기 적합한가?
소프트웨어 엔지니어 중 사소하지 않은 엔지니어링 작업—아키텍처 리팩토링, 회귀 해결, 의존성 업데이트, API 포팅 또는 회귀 테스트 스위트 작성 등—에 대해 진정한 자율 능력을 원하지만, 쉘 접근 권한을 포기하거나 블랙박스 모델이 저장소에서 마음대로 작동하도록 신뢰하고 싶지 않은 사람들에게 적합합니다.
무엇이 다른가?
기존의 코딩 에이전트들은 LLM(대규모 언어 모델)에게 직접적인 쉘 실행 권한과 주변 자격 증명(ambient credentials)을 넘겨주며, 모델이 파일을 삭제하거나 토큰을 유출하거나 환각으로 인한 무한 루프에 빠지지 않기를 바랄 뿐입니다.
M31A는 근본적인 아키텍처 경계를 강제합니다:
지능은 권위가 아니다.
대규모 언어 모델(LLM)은 구조화된 액션을 제안하는 신뢰할 수 없는 추론 엔진으로 취급됩니다. Rust 런타임이 모든 상태, 정책 평가, 프로세스 샌드박싱, 원자적 체크포인트, 검증 게이트를 엄격하게 소유합니다. 모델이 단순히 "완료했습니다"라는 출력을 내보냈다고 해서 작업이 완료된 것으로 간주되지 않습니다. 오직 경험적 증거(컴파일러 검사, 테스트 통과, 린트 정리)가 코드가 올바르게 작동한다는 것을 입증할 때만 완료로 표시됩니다.
┌─────────────────────────────────────────────────────────────┐
│ 모델이 제안합니다 │
│ (신뢰할 수 없는 추론: 계획, 코드 수정, 분석) │
...
시각적 데모
인터랙티브 터미널 콕핏 (m31a tui)
M31A는 Ratatui를 기반으로 하며, 차분한 의미론적 디자인 토큰, 조용한 상태 헤더, 테두리 없는 대화 스트림을 갖춘 대화 중심의 터미널 콕핏을 제공합니다:
M31A · nvidia/nemotron-3-ultra-550b-a55b · master · active 08:30:15
────────────────────────────────────────────────────────────────────────────────----
You
...
헤드리스 자율 실행 (m31a mission run)
스크립트나 CI에서 단일 명령 실행을 선호하십니까? 셸에서 직접 미션을 시작하세요:
$ m31a mission run "데이터베이스 쿼리를 파라미터화된 구문으로 리팩토링" --profile coding
[INFO] 런타임을 초기화합니다: workspace=/home/user/project channel=production
...
M31A를 사용하는 이유?
| 기능 | 기존 AI 코딩 스크립트 | M31A 자율 런타임 |
|---|
| 권한 | LLM이 임의의 셸 명령을 실행합니다. | 모델은 제안하고; 런타임이 결정합니다. |
| ... | | |
- 비순환 DAG 작업 계획 (Acyclic DAG Task Planning): 자연어 목표를 웨이브 병렬화(wave parallelization), 동시성 제한(concurrency limits), 그리고 중요 경로 스케줄링(critical path scheduling)을 갖는 결정론적 위상 정렬 방향성 비순환 그래프(DAGs)로 분해합니다.
- 대화 우선 터미널 콕핏 (Conversation-First Terminal Cockpit): Ratatui 기반의 깔끔하고 타이포그래피가 적용된 TUI이며, 미묘한 역할 레이블(
You, M31A, Tool, Verification), 상호작용적인 diff 검사, 승인 프롬프트, 자동 완성 슬래시 명령어(/) 기능을 제공합니다.
- 11단계 우회 불가능 정책 게이트 (11-Stage Non-Bypassable Policy Gate): 모든 부작용을 포괄적인 규칙 매트릭스(
ALLOW, DENY, ASK, ESCALATE)와 비교하여 평가합니다. 위험한 명령어와 민감한 파일 수정은 실행 전에 차단됩니다.
- 경험적 다단계 검증 (Empirical Multi-Tier Verification): 내장된 검증 엔진이 컴파일러 패스(compiler passes), 단위 테스트(unit tests), 보안 검사를 실행합니다. 빌드가 실패할 경우, 진단기(diagnostician)는 오류를 근본 원인과 연관시키고 휴리스틱 복구 방안을 제안합니다.
- 2단계 충돌 복구 (Two-Phase Crash Recovery): 시스템 상태, 작업 진행 상황 및 아티팩트는 2단계 원자적 트랜잭션(two-phase atomic transactions)을 통해 SQLite에 커밋됩니다. 실행이 중단되면 M31A는 시작 시 자동으로 충돌을 감지하고 안전하게 재개합니다.
- 격리된 Git 기여 (Isolated Git Attribution): 작업은 전용 워크트리(worktrees)에서 이루어집니다. 커밋에는 검증 가능한 기여 메타데이터(
M31A-Mission, M31A-Task, M31A-Agent)가 포함되며, 승인되기 전까지 주 작업 브랜치(main working branch)를 오염시키지 않습니다.
- 제로 누수 원격 측정 및 감사 (Zero-Leak Telemetry & Auditing): 원격 측정 스트림(NDJSON)과 압축된 SQLite 이벤트 로그는 디스크에 기록되기 전에 자격 증명(NVIDIA 키, JWT, 개인 키, 데이터베이스 연결 문자열 등)을 정제합니다.
빠른 시작 (Quickstart)
1. 설치 (Installation)
원라인 설치 스크립트 (One-Liner Install Script)
Linux 및 macOS:
curl -fsSL https://raw.githubusercontent.com/eshanized/M31A/master/scripts/install.sh | bash
Windows (PowerShell):
irm https://raw.githubusercontent.com/eshanized/M31A/master/scripts/install.ps1 | iex
사전 구축된 독립 실행형 바이너리 (Pre-Built Standalone Binaries)
공식 독립 실행형 릴리스 아카이브는 GitHub Releases에서 직접 다운로드하세요:
| 플랫폼 / 아키텍처 | 대상 트리플 | 아카이브 |
|---|
| Linux (x86_64) | x86_64-unknown-linux-gnu | m31a-0.1.10-linux-x64.tar.gz |
| ... | | |
| 각 릴리스 아카이브에는 독립 실행형 바이너리, 문서, 라이선스, SHA-256 체크섬 및 배포 매니페스트가 포함되어 있습니다. | | |
소스에서 빌드하기 (Build from Source)
필수 사항: Rust 1.85+ (cargo) 및 make.
git clone https://github.com/eshanized/M31A.git
cd M31A
make bootstrap
...
M31A는 고성능 프로덕션 추론 제공업체로 NVIDIA NIM을 사용합니다.
첫 실행 온보딩 마법사(가장 일반적인 채널 격리형 자격 증명 저장소, 0600 권한)에 NVIDIA NIM API 키를 저장하세요. 프로덕션 런타임은 환경 변수나 .env 파일에서 API 키를 읽지 않습니다:
(선택 사항) 활성 모델을 명시적으로 선택하세요: 온보딩 중에 모델 검색을 실행하거나, .m31a/config.toml에 agents.default_model을 설정하거나, 모든 명령어에서 --model을 전달하세요. M31A_MODEL은 비공개적인 명시적 재정의로 인정됩니다. 빈 카탈로그는 모델을 임의로 생성하지 않으므로, 모델 실행 전에 검색, 캐싱 또는 명시적인 연산자 선택이 필요합니다.
3. 실행 (Launch)
예시 임무 (Example Mission)
자율 리팩토링 임무를 실행하는 단계별 예시는 다음과 같습니다:
m31a mission run \
"데이터베이스 설정을 강력하게 타입이 지정된 Settings 구조로 추출하고 테스트로 검증"
--profile coding
M31A가 자동으로 수행하는 작업:
- Genesis 및 레포 스캔: 리포지토리 AST(Abstract Syntax Tree)와 워크스페이스 구조를 스캔하여 의존성 및 호출자에 대한 인메모리 지식 그래프를 구축합니다.
- DAG 계획: 임무를 개별적인 작업으로 분해합니다:
- 작업 A:
src/config/settings.rs에 Settings 구조체와 serde 유효성 검사를 포함하여 생성합니다.
- 작업 B:
src/db/pool.rs를 업데이트하여 Settings를 사용하도록 합니다.
- 작업 C:
tests/config_test.rs에 단위 테스트를 추가합니다.
- 정책 게이트 평가: 모든 도구 요청은 정책을 통과합니다. 파일 읽기는 허용(
ALLOW)되며, 소스 코드 수정은 워크스페이스 경계 내에서 검증됩니다.
- 샌드박스 변형(Mutation): 편집 내용은 원자적으로 스테이징됩니다. 편집에 실패하거나 구문 오류가 발생하면 변경 사항은 롤백됩니다.
- 지속적인 검증: M31A는
cargo check와 cargo test를 실행합니다. 타입 불일치가 발생하면 진단기가 컴파일러 오류를 추출하고, 구조화된 진단을 에이전트에게 전달하며, 불일치를 수정합니다.
- 완료 증거: 테스트가 회귀 없이 통과하면, 임무는 전체 원격 측정(telemetry) 출처와 함께 깨끗한 git 브랜치에 변경 사항을 커밋합니다.
작동 방식: 실행 루프
모든 임무는 결정론적인 4단계 수명 주기(lifecycle)를 따릅니다:
┌──────────┐
│ 01 PLAN │ 비순환성 DAG 분해 및 웨이브 스케줄링
└────┬─────┘
...
1. **Plan (DAG 분해)**: 플래너는 제약 조건(constraints), 위험 요소(risks), 그리고 요구 사항을 분석하여 의존성 그래프(dependency graph)를 생성하며, 이 그래프에서 독립적인 작업들은 병렬 웨이브로 실행됩니다.
2. **Execute (샌드박스 격리)**: 에이전트들은 28개의 핵심 도구 목록(catalog)에서 도구를 호출합니다. 모든 액션은 부작용(side effect)이 발생하기 전에 반드시 11단계 정책 게이트(policy gate)를 통과해야 합니다.
3. **Verify (실증적 증거)**: 런타임은 컴파일러 검사(compiler checks), 자동화된 단위/통합 테스트(unit/integration tests), 그리고 보안 스캔을 실행합니다. 모델의 완료 주장(Model assertions of completion)은 확실한 증거 없이는 무시됩니다.
4. **Recover (원자적 체크포인트)**: 완료된 작업들은 SHA-256 매니페스트로 봉인됩니다. 시스템 충돌, 전원 장애 또는 프로세스 취소 등의 경우, 런타임은 검증된 작업을 재실행하지 않고 깔끔하게 재개됩니다.
---
## 아키텍처 (L0–L9)
M31A는 엄격한 하향 의존성 계층적 계층 구조(downward-dependency layered hierarchy)를 강제합니다. 낮은 계층은 높은 계층을 임포트하거나 의존하지 않으며, TUI와 CLI는 권위 있는 SQLite 상태의 순수한 투영(pure projections)입니다:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
L9 사용자 인터페이스 CLI 명령어, 대화형 Ratatui TUI 콕핏
L8 자율성 임무 오케스트레이터, 정지 평가기, 루프 감지기
L7 검증 테스트 러너, 컴파일러 진단기, 충돌 복구
...
---
## 보안 및 거버넌스
M31A는 외부 입력(저장소 내용, 웹 페이지, LLM 응답)이 잠재적으로 적대적(adversarial)일 수 있다는 가정하에 설계되었습니다:
- **11단계 정책 게이트 (Policy Gate)**: 모든 파일 쓰기, 터미널 명령어 실행, git 커밋은 우선순위 규칙에 따라 평가됩니다: 작업 공간 격리(Workspace containment) → 민감 경로 거부(`.git/`, `.env`, 자격 증명) → 도구 안전 제한(Tool safety limits) → 사용자 승인(Human approval).
- **프롬프트 주입 방어 (Prompt Injection Defense)**: 모든 신뢰할 수 없는 외부 텍스트(파일 내용, 컴파일러 로그, git diff 등)는 프롬프트 주입을 방지하기 위해 구조화된 XML 엔벨로프와 엄격하게 이스케이프 처리된 구분자(delimiters)로 감싸집니다.
- **제로 누출 리다क्टर (Zero-Leak Redactor)**: 텔레메트리 및 감사 스트림은 API 키, 토큰, SSH 키, 연결 문자열에 대해 실시간 정규 표현식 매처를 사용하여 자격 증명을 제거(scrub)합니다.
- **플랫폼 리소스 제한 (Platform Resource Limits)**: OS 수준의 리소스 경계(cgroups v2, POSIX rlimits), 아티팩트 쿼터, 루프 감지, 취소 안전장치 등을 통해 인위적인 토큰 또는 비용 상한선 없이 실행을 보장합니다.
---
## 플랫폼 및 제공업체 지원 (Platform & Provider Support)
### 플랫폼 적격성 매트릭스 (Platform Qualification Matrix)
| 플랫폼 | 대상 | 상태 | 격리 메커니즘 |
|:---|:---|:---|:---|
| **Linux (x86_64)** | `x86_64-unknown-linux-gnu` | **주요 / 완전 적격** | cgroups v2, POSIX rlimits, 네임스페이스(namespaces) |
| ... |
*플랫폼 기능 보장 및 샌드박스 격리 계층에 대한 전체 세부 정보는 [`docs/PLATFORM-SUPPORT.md`](docs/PLATFORM-SUPPORT.md)를 참조하십시오.*
### 모델 제공업체 지원 (Model Provider Support)
- **프로덕션 제공업체**: **NVIDIA NIM** (`nvidia_nim`). `nvidia/nemotron-3-ultra-550b-a55b`, `meta/llama-3.3-70b-instruct`, `deepseek-ai/deepseek-r1`을 포함한 최첨단 모델을 지원합니다.
- 동적 모델 검색은 시작 시 사용 가능한 모델을 자동으로 쿼리합니다.
- 폐기된 레거시 제공업체 식별자는 명확한 복구 지침과 함께 결정론적으로 거부됩니다.
---
## 문서 (Documentation)
전체 아키텍처 매뉴얼, 서브시스템 가이드 및 사양:
| 가이드 | 문서 | 설명 |
|:---|:---|:---|:|
| **런타임 아키텍처** | [`docs/architecture/ARCHITECTURE.md`](docs/architecture/ARCHITECTURE.md) | 완전한 계층형 아키텍처, 상태 기계(state machines), 및 의존성 규칙. |
| ... |
---
## 프로젝트 상태 (Project Status)
M31A는 활발하게 개발되는 오픈소스 런타임입니다. 프로젝트가 빠르게 진화하고 있으므로, 프로덕션 환경에서 사용하기 전에 최신 릴리스, 플랫폼 지원 및 검증 이력을 자체 환경과 비교하여 평가하십시오.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46