CodeAlta is distributed as a .NET global tool. The package id is CodeAlta; the installed command is alta.
CodeAlta is currently distributed as preview 0.x releases before the final 1.0. Expect behavior, configuration shape, screenshots, and extension APIs to evolve between preview versions; review release notes before upgrading a workflow you depend on.
Install .NET 10 first, then install/update CodeAlta:
dotnet tool install -g CodeAlta
Then launch the terminal UI:
alta
CodeAlta stores user state under ~/.alta/, including configuration, logs, cached provider state, session journals, saved prompts, plugins, and skills.
CodeAlta uses Nerd Fonts icons throughout the terminal UI. Install a Nerd Font-patched font and select it in your terminal profile before using CodeAlta. Without a font that includes Nerd Font glyphs, icons may appear as empty boxes, question marks, or misaligned symbols.
On first launch, CodeAlta creates a starter ~/.alta/config.toml with common provider entries disabled. If no provider is enabled yet, the app opens the Model Providers dialog automatically.
Use the dialog to:
~/.alta/config.toml and refresh the runtime.You can reopen this dialog any time with Ctrl+G Ctrl+R or from the provider summary in the footer.
The most common first setup is a subscription-backed provider: Copilot for GitHub Copilot subscriptions, or Codex for ChatGPT/Codex subscriptions. In the Model Providers dialog, enable the matching provider, keep or choose a model, start the browser/device login flow, then click Test and Save after login completes.
Codex and Copilot credentials are stored in CodeAlta-owned state through their login flows. They are intentionally separate from OpenAI platform API keys.
If you use an API-key provider instead, set the provider's environment variable and enable that provider in the dialog or TOML. For OpenAI platform access:
Environment variables keep API keys out of ~/.alta/config.toml and project files. Set the variable in the same shell or profile that launches alta, then restart alta so the running process can see the new value.
# macOS/Linux
export CODEALTA_OPENAI_API_KEY="..."
# PowerShell
$env:CODEALTA_OPENAI_API_KEY = "..."
In ~/.alta/config.toml:
[chat]
default_provider = "openai"
[providers.openai]
enabled = true
display_name = "OpenAI"
type = "openai-responses"
model = "gpt-5.5"
reasoning_effort = "high"
api_key_env = "CODEALTA_OPENAI_API_KEY"
api_url = "https://api.openai.com/v1"
The in-app dialog edits the same file and preserves advanced TOML values.
Other API-key providers use the same pattern with their own environment variables, such as CODEALTA_ANTHROPIC_API_KEY, CODEALTA_DEEPSEEK_API_KEY, or CODEALTA_ZAI_API_KEY.
Ctrl+O, /open, or the + button in the Projects sidebar row.Enter to send. Use Shift+Enter for a new line.Useful first prompts:
Summarize this repository and identify the main build/test commands.
Inspect the failing test output below and propose the smallest safe fix.
Type @ in the prompt editor to open the project file/folder picker. Accepted entries are inserted as Markdown links such as [Program.cs](src/CodeAlta/Program.cs) and are sent as structured attachments. Raw @path, quoted paths, and optional :line or :start-end suffixes are also recognized at send time.
@, search for files or folders, and accept entries to add them to the prompt as structured attachments.When the selected model supports image input, copy an image to the clipboard and press Ctrl+V in the prompt editor. CodeAlta opens a preview/title dialog so you can confirm the image before it is attached, then stores the image beside the session journal.
Image preview requires a terminal with inline image protocol support. Use a terminal that supports Sixel, such as Windows Terminal, or the Kitty/iTerm2 image protocols. Without that support, pasted-image previews may not render correctly even when the selected model can accept images.
F1, /help, or ? whenever you need a reminder of workspace, provider, thread, and dialog shortcuts.| Action | Shortcut or command |
|---|---|
| Help / command discovery | F1, /help, or ? |
| Open project | Ctrl+O or /open |
| Open file editor | Ctrl+E or /edit |
| Open full prompt editor | F6 |
| Focus provider/model selector | /model |
| Open model providers | Ctrl+G Ctrl+R |
| Browse models | Ctrl+G Ctrl+O or /models |
| About / update status | Ctrl+G Ctrl+A or /about |
| Open workspace settings | Ctrl+G Ctrl+W or /settings |
| Open plugins | Ctrl+G Ctrl+N or /plugins |
| Open logs | Ctrl+G Ctrl+L or /logs |
| Context usage popup | Ctrl+G Ctrl+U |
| Thread report | Ctrl+G Ctrl+T |
| Steer a running thread | Ctrl+Enter |
| Delegate to another session | F7 |
| Compact idle thread | F11 |
| Clear prompt queue | F10 |
| Previous/next user or assistant message | F3 / F4 |
| Switch tabs | Alt+Left / Alt+Right |
For the best experience in Windows Terminal, unbind terminal-level shortcuts that CodeAlta needs to receive directly. Other Windows Terminal shortcuts may also conflict with CodeAlta shortcuts, so review your Windows Terminal settings if a key does not behave as expected. Add these entries to the keybindings array in Windows Terminal's settings.json if they are currently assigned to paste or pane-focus actions:
{ "keys": "ctrl+v", "id": "unbound" },
{ "keys": "alt+left", "id": "unbound" },
{ "keys": "alt+right", "id": "unbound" }