ASIAT is a terminal-native, Ink-powered TUI coding assistant that orchestrates code understanding, editing, and project automation for local repositories.
- Interactive TUI chat with an input box and scrollable history.
- Natural language intent parsing for explain, refactor, run, git, and file creation workflows.
- TypeScript-aware code indexing via
ts-morph, persisted in a local SQLite database with lightweight embeddings for vector similarity. - LLM abstraction layer supporting OpenAI or self-hosted LLaMA-compatible endpoints.
- Patch engine and file utilities for applying unified diffs or generating new files.
- Git integration for branch, status, diff, commit, and push workflows.
- Command executor that runs build, test, lint, or migration commands inside the target project.
- Session memory retaining the latest conversation turns for better follow-up interactions.
npm install
npm run build
npx asiat --project /path/to/your/projectDuring development you can run the CLI directly with TypeScript support:
npm run dev -- --project /path/to/your/projectSet the following environment variables as needed:
OPENAI_API_KEY– required for OpenAI provider.ASIAT_LLM_PROVIDER–openai(default) orllama.ASIAT_LLM_MODEL– override default model name.ASIAT_LLM_BASE_URL– custom endpoint for non-OpenAI providers.
- CLI bootstrap loads configuration and initializes shared services.
- Ink TUI renders chat history, status bar, and command input.
- Intent parser classifies user requests to drive downstream actions.
- Code indexer walks the repository, extracts symbols, and stores embeddings.
- Git engine exposes porcelain status, branching, commits, and push helpers.
- LLM gateway normalizes access to remote or local language models.
- Patch system applies unified diffs and manages file reads/writes.
- The SQLite database is stored in
data/index.dbby default. - Embeddings are deterministic and CPU friendly so ASIAT works offline.
- Extend intent handling in
src/tui/app.tsxto add new behaviors. - The patch engine expects standard unified diff format when applying patches.
MIT