# Building Antigravity from Source
This guide explains how to extract, modify, and rebuild the Antigravity IDE from source.
## Prerequisites
- Linux system (Ubuntu/Debian recommended)
- Node.js 18+ with npm
- Git
- Standard build tools
- ~1GB disk space
## Quick Build
If you just want to rebuild the package without modifications:
```bash
# Clone repository
git clone https://github.rommark.dev/admin/antigravity-ai-providers.git
cd antigravity-ai-providers
# Build .deb package
./scripts/build-deb.sh
# Install
sudo dpkg -i packages/antigravity_2.0.1-ai-providers-1_amd64.deb
```
## Detailed Build Process
### Step 1: Extract app.asar
The application code is packaged in `app.asar`. Extract it to modify:
```bash
# Extract app
./scripts/extract-app.sh
# This creates: src/app-extracted/
```
### Step 2: Modify Code
Navigate to extracted files:
```bash
cd src/app-extracted/dist/
```
**Key Files:**
- `services/aiProviderService.js` - AI provider management
- `services/settingsService.js` - Application settings
- `ipcHandlers.js` - IPC communication
- `aiProviderAPI.ts` - TypeScript API wrapper
- `ai-provider-settings.html` - Complete GUI
**Example Modifications:**
#### Add a New Provider Preset
Edit `services/aiProviderService.js`:
```javascript
const PROVIDER_PRESETS = {
// ... existing presets ...
"My Custom Provider": {
type: AIProviderType.CUSTOM,
endpoint: "https://api.myprovider.com/v1",
models: ["model-1", "model-2"],
capabilities: [AIProviderCapability.CHAT, AIProviderCapability.STREAMING],
},
};
```
#### Add New IPC Handler
Edit `ipcHandlers.js`:
```javascript
electron_1.ipcMain.handle('ai:my-new-handler', async (_event, arg) => {
// Your handler logic
return result;
});
```
#### Customize GUI
Edit `ai-provider-settings.html`:
```html
My New Feature
```
### Step 3: Repack app.asar
After making changes, repack:
```bash
# Repack
./scripts/repack-app.sh
# This updates: src/app.asar
```
### Step 4: Build Package
Create the .deb package:
```bash
# Build
./scripts/build-deb.sh
# Output: packages/antigravity_2.0.1-ai-providers-1_amd64.deb
```
### Step 5: Install & Test
```bash
# Install
sudo dpkg -i packages/antigravity_2.0.1-ai-providers-1_amd64.deb
# Test
antigravity
```
## Development Workflow
### Watching for Changes
For rapid development:
```bash
# Terminal 1: Extract and watch
./scripts/extract-app.sh
# (Manual repack after changes)
# Terminal 2: Build and install
./scripts/build-deb.sh && sudo dpkg -i packages/*.deb
```
### Debugging
View logs:
```bash
# Electron logs
cat ~/.config/antigravity/logs/*.log
# Language server logs
cat ~/.cache/antigravity/language_server.log
```
Run in debug mode:
```bash
antigravity --enable-logging
```
### Testing Changes
```bash
# Reinstall and test
sudo dpkg -r antigravity
sudo dpkg -i packages/antigravity_2.0.1-ai-providers-1_amd64.deb
antigravity
```
## Troubleshooting
### asar command not found
```bash
npm install -g asar
```
### Build fails
Check dependencies:
```bash
sudo apt-get install build-essential
```
### Installation fails
Fix dependencies:
```bash
sudo dpkg -i antigravity_2.0.1-ai-providers-1_amd64.deb
sudo apt-get install -f
```
### App doesn't start
Check logs:
```bash
journalctl -xe
cat ~/.config/antigravity/logs/*.log
```
## Advanced: Custom Package
### Create Different Architecture
Edit `scripts/build-deb.sh`:
```bash
# For ARM64
ARCH="arm64"
DEB_FILE="antigravity_${VERSION}_arm64.deb"
```
### Add Extra Dependencies
Edit `scripts/build-deb.sh`:
```bash
# Add to Depends field in control file
Depends: ..., my-custom-package
```
### Include Additional Files
```bash
# In build-deb.sh, after copying app files:
cp /path/to/your/file "$TEMP_DIR/opt/antigravity/"
```
## Contributing Changes
1. Fork repository
2. Create branch: `git checkout -b feature/my-feature`
3. Commit changes: `git commit -am 'Add my feature'`
4. Push: `git push origin feature/my-feature`
5. Create Pull Request
## API Documentation
See `/docs/` directory for complete API reference:
- `AI_PROVIDER_SPECIFICATION.md` - AI Provider API
- `AI_PROVIDER_README.md` - Integration guide
- `IMPLEMENTATION_SUMMARY.md` - Architecture details
## Need Help?
- **Issues**: https://github.rommark.dev/admin/antigravity-ai-providers/issues
- **Discussions**: https://github.rommark.dev/admin/antigravity-ai-providers/discussions
## Summary
1. Extract: `./scripts/extract-app.sh`
2. Modify: Edit files in `src/app-extracted/dist/`
3. Repack: `./scripts/repack-app.sh`
4. Build: `./scripts/build-deb.sh`
5. Install: `sudo dpkg -i packages/*.deb`
**Happy coding!** 🚀