WikifitaGitHub live67e8de5
outro · sdk-test/sdk-test-reverse-engineering

Reverse Engineering Findings — Antigravity Language Server Hub

Complete RE analysis of the agy Go binary: 3305 decompiled functions across 100+ subsystems, protobuf schemas, credentials, and enums extracted via Ghidra MCP

Baixar raw

Reverse Engineering Findings — Antigravity Language Server Hub

Binary Under Analysis

PropertyValue
Binaryagy — Antigravity CLI
Path/Users/alefita/.local/bin/agy
Size~99 MB
ArchitectureARM64 (Apple Silicon)
LanguageGo (gc compiler)
Internal Package Rootgithub.com/anthropics/jetsky/internal/...
Decompilation ToolGhidra MCP (automated analysis)
Total Decompiled Files3,305 .c files
Unique Package Prefixes130+

The binary was imported into Ghidra, auto-analyzed, and then systematically decompiled. A custom Python pclntab parser (scratch/go_pclntab_parser.py) extracted function names, source file paths, and line number mappings from the Go binary's Plan 9 Line Number Table. This produced an index of all Go functions (scratch/go_functions.json) that guided the decompilation campaign.

Subsystem Inventory

The 3,305 decompiled functions cluster into distinct subsystems. Below is the full inventory grouped by architectural function.

Language Server Subsystem

The core LSP (Language Server Protocol) implementation that powers code intelligence.

PackageFunctionsKey Components
lspMultipleLSP server initialization, document sync, diagnostics
languageMultipleLanguage detection, file type resolution
completionMultipleCode completion engine
codesearchMultipleCodebase search and indexing
opensearchMultipleOpen search protocol integration
diffMultipleDiff computation and application
applyedit5HandleFastApply, applyReplacementsToContent, filterFastApplyDiffToRange, handleFastApplyFallback, handleRepairFallback

API Server Subsystem

The gRPC-based API server that proxies requests to Google's backend.

PackageFunctionsKey Components
api_server_go_proto30+ApiServerService with 15+ RPC handlers
v1internal_go_proto25+CloudCode service with 15+ RPC methods
analytics_go_proto6AnalyticsService — telemetry recording

ApiServerService RPC Methods (Extracted)

MethodPurpose
ApplyTrajectoryHeuristicsTrajectory optimization
CreateTrajectoryShareStreamShare trajectories across sessions
GetCascadeModelConfigsCascade model configuration retrieval
GetCommandModelConfigsCommand model configuration
GetCompletionExamplesFew-shot completion examples
GetDeploymentConfigDeployment configuration
GetEmbeddingsVector embedding generation
GetImageGenerationImage generation endpoints
GetMQueryMulti-query search
GetMcpServerTemplatesMCP server template registry
GetModelInfosModel metadata retrieval
GetModelStatusesModel health/status checks
GetTeamOrganizationalControlsTeam-level access controls
GetTranscriptionAudio transcription
GetUnleashContextFieldsFeature flag context
GetWebDocsOptionsDocumentation options
GetWebSearchRedirectWeb search redirect
GetWebSearchResultsWeb search results
ProvideFeedbackUser feedback collection
RecordAsyncTelemetryAsync telemetry recording

CloudCode Service Methods (v1internal)

MethodPurpose
CompleteCodeCode completion
FetchAdminControlsAdmin control panel
FetchCodeCustomizationStateCustomization state
GenerateChatChat generation
GetCodeAssistGlobalUserSettingGlobal user settings
InternalAtomicAgenticChatAtomic agentic chat (internal)
ListAgentsAgent enumeration
ListCloudAICompanionProjectsCompanion project listing
ListExperimentsA/B experiment listing
ListModelConfigsModel configuration listing
ListRemoteRepositoriesRemote repo listing
LoadCodeAssistCode assist initialization
MigrateDatabaseCodeDatabase migration
OnboardUserUser onboarding flow
RecordClientEventClient event telemetry
RecordCodeAssistMetricsCode assist metrics
RecordSmartchoicesFeedbackSmart choices feedback
SearchSnippetsSnippet search
SetCodeAssistGlobalUserSettingSetting update
TransformCodeCode transformation

Extension Server Subsystem

The plugin/extension management layer.

PackageFunctionsKey Components
extensionMultipleExtension lifecycle management
exte / extenMultipleExtension loading and initialization
sidecarsMultipleSidecar process management
mcp / mcpcoreMultipleModel Context Protocol server integration
launchmanagerMultipleExtension launch orchestration
sdk / sdkprocessMultipleSDK process management

Decorators Subsystem

Prompt decoration and template management.

PackageFunctionsKey Components
decoratorsMultiplePrompt decorator chain
templateprovider3TemplateProvider, loadHelpersFromDir
promptMultiplePrompt construction and formatting
ephemeralMultipleEphemeral message handling

Knowledge Subsystem

Document and knowledge base management.

PackageFunctionsKey Components
knowledgeMultipleKnowledge item management
document / documentmanagerMultipleDocument lifecycle
docMultipleDocument parsing
notebookMultipleNotebook support
web_scrapingMultipleWeb content extraction

Tool Subsystem

Tool definitions, execution, and conversion.

PackageFunctionsKey Components
tools7+RunCommandToolConverter, GrepSearchToolConverter, ViewFileToolConverter, WaitToolConverter, ListPermissionsToolConverter, CommandStatusToolConverter, SplitCompletionProvider
toolconvertersMultipleReadURLContentToolConverter
tooloverrides1ToolOverrideMapper
tool_parsers1ChatTranscriptToolFormatter
toolMultipleBase tool infrastructure
slashcommandsMultipleSlash command processing

Browser Subsystem

Full browser automation with CDP (Chrome DevTools Protocol).

PackageFunctionsKey Components
browser30+Screenshot capture, DOM reading, JavaScript execution, mouse/keyboard events, page management, scroll/wheel handlers
browserabstractionsMultipleBrowser abstraction layer
cdpclientMultipleChrome DevTools Protocol client
chromeMultipleChrome integration
webmMultipleWebM media handling

Browser Functions (Partial List)

FunctionPurpose
NewCaptureBrowserScreenshotHandlerScreenshot capture
NewCaptureBrowserConsoleLogsHandlerConsole log capture
NewListBrowserPagesHandlerPage enumeration
NewReadBrowserPageHandlerPage content reading
NewBrowserScrollHandler / ScrollDown / ScrollUpScroll control
NewBrowserMouseWheelHandlerMouse wheel simulation
executeJavaScriptActionJS execution in page context
mouseWheelAction / pressKeyActionInput simulation
imageToPNGImageProtoImage format conversion
makeClickFeedbackPNG / makeDragFeedbackPNGsVisual feedback generation
buildMarkdownTrajectorySummaryTrajectory summarization
createScratchpadFileScratchpad file creation

Agent & Executor Subsystem

Agent lifecycle, execution, and state management.

PackageFunctionsKey Components
agent_state_component35+AgentState, SubagentUpdateForwarder, trajectory merging, pub/sub
agentexecutor12+AgentExecutor (Run, cancel, state transitions), CascadeExecutor
subagentMultipleConversationSubagentManager
agent15+Step handling, payload cases (set operations), model request cloning
agentapi2sendMessageHandler (Execute, Metadata)
executor / executorsMultipleExecution infrastructure
cascadeMultipleCascade execution model

Trajectory Subsystem

Conversation trajectory management and persistence.

PackageFunctionsKey Components
trajectory15+protoTrajectory, StepHeaderMetadata, StepHeaderTaskDetails, ChatModelHeader, GeneratorMetadataHeader, PlannerResponseStepView
traj2processPendingUpdates, startCommitWorker
trajectorystore2Manager, ProtoStore
dbtrajectoryMultipleDatabase-backed trajectory storage
recordingMultipleSession recording
battlemode10+trajectoryWithReplacer — step replacement, cloning, status indexing

Authentication Subsystem

OAuth2 authentication and keychain management.

PackageFunctionsKey Components
authclient12AuthClientLoginWithBrowser, refreshAndSaveToken, GetAuthStatus, GetGrantedScopes, ValidateProject, performTerminalAuthFlow, validateLoginAndUpdateStatus, generateState, openBrowser

Streaming Subsystem

Real-time streaming of model responses.

PackageFunctionsKey Components
streaming4BaseStreamReceiver, CompletionLatencyInfo, CompletionWithLatencyInfo

Configuration & Experiments

PackageFunctionsKey Components
configMultipleConfiguration management
experimentsMultipleA/B experiment framework
unleash4UnleashWrapper, UnleashWrapperFactory, contextFieldState, InitializeFactory
customizationsMultipleUser/team customizations
creditsMultipleCredit/quota management

Workspace & VCS

PackageFunctionsKey Components
workspace_manager15+WorkspaceInfoManager, WorkspaceFiles, WorkspaceInfo, file tree traversal
vcs8Repository, GitRepoInfo, VcsCache, IsRepoPubliclyAccessible
gitMultipleGit operations
commitMultipleCommit handling
scmMultipleSource code management

Other Subsystems

PackageFunctionsKey Components
model / modelapiinterface / modelapiccpaMultipleModel API abstraction layer
chat / chatconvertersMultipleChat message handling
commandMultipleCommand execution
terminal2ShellCommandTracker, StaticTerminalShellCommand
imagegenMultipleImage generation
hooks / prehooks / posthooks / pretoolhooks / stophooksMultipleHook system (lifecycle events)
permissionsMultiplePermission management
profilingMultiplePerformance profiling
telemetry / telemetryclient / telemetryinterface5+AntigravityClient, clearcutLogger, DummyTelemetryClient
statesync3UnifiedStateSyncClient, subscription management
stepmanager1StepManager
tokenizer1EstimateTokenCounter
sandboxproxy / sboxMultipleSandbox execution
netboxMultipleNetwork box/proxy
evalMultipleEvaluation framework
datasetsMultipleDataset management
trainer / trainer_go_proto3TrainerConfig, BaseModelConfig, RoPEEmbeddingConfig
geminiMultipleGemini-specific integration
codeiumMultipleCodeium legacy integration
interceptorMultipleRequest/response interception
platformMultiplePlatform abstraction
jsonhookMultipleJSON hook processing
multicallMultipleBatched RPC calls
reactiveMultipleReactive state management
ssh / remoting / reversetunnelMultipleRemote connection infrastructure
checkpointMultipleState checkpointing
pipeMultiplePipe-based communication
integrationMultipleIntegration layer

Protobuf Schemas (Reconstructed)

ModelInfo (25 Fields)

syntax = "proto3";
package jetsky.model;

message ModelInfo {
  string model_id = 1;
  string display_name = 2;
  string description = 3;
  ModelProvider provider = 4;
  ModelType model_type = 5;
  BackendType backend_type = 6;
  HybridDeployment hybrid_deployment = 7;
  int32 max_input_tokens = 8;
  int32 max_output_tokens = 9;
  float temperature_default = 10;
  float temperature_min = 11;
  float temperature_max = 12;
  bool supports_tools = 13;
  bool supports_streaming = 14;
  bool supports_system_prompt = 15;
  bool supports_images = 16;
  string api_endpoint = 17;
  string api_key_env = 18;
  PromptTemplaterType prompt_templater = 19;
  ToolFormatterType tool_formatter = 20;
  // Fields 21-25: pricing, capabilities, metadata (not fully reconstructed)
}

ProductEvent (Telemetry)

message ProductEvent {
  string event_name = 1;
  string api_key = 2;
  string installation_id = 3;
  string ide_name = 4;
  string os = 5;
  string codeium_version = 6;
  int64 timestamp = 7;
  map<string, string> properties = 8;
}

gRPC Service Definition

service LanguageServerService {
  rpc ValidateProject (ValidateProjectRequest) returns (ValidateProjectResponse);
  rpc GetCompletions (GetCompletionsRequest) returns (GetCompletionsResponse);
  rpc Chat (ChatRequest) returns (stream ChatResponse);
}

Credentials Map

Three distinct OAuth2 Client ID/Secret pairs were found in the binary:

Consumer (ACTIVE)

FieldValue
Client ID1071006060591-tmhssin2h21lcre235vtolojh4g403ep
Client SecretGOCSPX-REDACTED-1
UsageGoogle One / Consumer OAuth2
StatusActive — used by agy CLI + IDE + Master

Enterprise

FieldValue
Client ID884354919052-36trc1jjb3tguiac32ov6cod268c5blh
Client SecretGOCSPX-REDACTED-2
UsageGCP / Code Assist enterprise flows
StatusAvailable in binary, not active

Legacy (DISCONTINUED)

FieldValue
Client ID681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j
Client SecretGOCSPX-REDACTED-3
Usageopencode-gemini-auth (legacy Antigravity)
StatusDiscontinued — credential file deleted

Installation IDs

ComponentInstallation IDShared With
Antigravity Masteraba9d234-1284-4a20-98e6-0fa3cf57de66IDE
Antigravity IDEaba9d234-1284-4a20-98e6-0fa3cf57de66Master
Antigravity CLI17ac69b8-1279-4ce5-9201-10ee019953cdNone

Enums and Constants

PromptTemplaterType

ValueNamePurpose
0UNSPECIFIEDDefault
1NONERaw prompt, no template
2GENERALGeneral-purpose template
3GEMINI_LEGACYLegacy Gemini format
4DEEPSEEK_REASONERDeepSeek reasoning format
5GEMINI_2_0Gemini 2.0 format

The presence of DEEPSEEK_REASONER confirms internal testing/support for DeepSeek models within the JETSKY ecosystem.

ToolFormatterType

ValueNamePurpose
0UNSPECIFIEDDefault
1NATIVEModel-native tool format (OpenAI, Anthropic)
2XMLXML-style tool definitions
3MARKDOWNMarkdown-style tool descriptions

APIProvider

ValueNamePurpose
0UNSPECIFIEDDefault
1CODEIUMLegacy Codeium API
2CLOUD_CODEGCP Cloud Code API
3FIRST_PARTYGoogle 1st party API

ModelProvider

ValueNamePurpose
0UNSPECIFIEDDefault
1OPENAIOpenAI models
2ANTHROPICClaude models
3GOOGLEGemini models
4CUSTOMCustom/local models

BackendType

ValueNamePurpose
0UNSPECIFIEDDefault
1CLOUDCloud-hosted model
2LOCALLocally-running model
3HYBRIDHybrid deployment

ModelType

ValueNamePurpose
0UNSPECIFIEDDefault
1CHATChat/conversational
2COMPLETIONCompletion
3EMBEDDINGEmbedding
4MULTIMODALMulti-modal

HybridDeployment

ValueNamePurpose
0UNSPECIFIEDDefault
1CLOUD_ONLYCloud-only
2LOCAL_ONLYLocal-only
3CLOUD_WITH_LOCAL_FALLBACKCloud primary, local fallback
4LOCAL_WITH_CLOUD_FALLBACKLocal primary, cloud fallback

Auth Method

ValuePurpose
consumerGoogle One / personal OAuth
enterpriseGCP / Code Assist OAuth
api_keyAPI key authentication

Key String Extraction Highlights

StringContext
"gemini"Keychain service name
"antigravity"Keychain account name
"go-keyring-base64:"Keychain value prefix
"consumer"Auth method identifier
"https://oauth2.googleapis.com/token"Token refresh endpoint
"https://cloudcode-pa.googleapis.com"gRPC proxy endpoint
"Bearer "HTTP authorization token prefix

HTTP Headers (Binary Strings)

API Call Headers

HeaderPurpose
AuthorizationBearer <access_token>
x-api-keyAPI key (non-OAuth flows)
x-goog-api-clientClient identification
x-goog-user-projectBilling project
x-goog-sherlog-LinkInternal logging/tracing
x-goog-cloud-target-resourceTarget resource routing
X-Goog-Ext-525006001-binBinary extension data
X-Goog-Drive-Resource-KeysDrive resource keys
X-Goog-Request-ReasonAudit trail
x-codeium-csrf-tokenCSRF protection
X-Http-Session-IdSession tracking

.pb File Analysis

implicit/ Directory

Files in ~/.gemini/antigravity-ide/data/implicit/ are encrypted — not raw protobuf. Multiple decoding attempts failed. Likely trajectory files from the pre-upgrade version of Antigravity IDE.

agyhub_summaries/

Files in the agyhub summaries directory are raw protobuf — successfully decoded. They contain session summaries and metadata.

Validation Endpoints

EndpointPurpose
https://www.googleapis.com/oauth2/v3/tokeninfo?access_token=<token>Validate token, check scopes, get metadata
https://www.googleapis.com/oauth2/v1/userinfoGet user profile data

Deep-Dive Pages

For detailed analysis of the patterns and systems revealed by this RE work:

TopicDeep-Dive PageKey Content
Decompiled patternssdk-test-decompiled-patterns10 architectural patterns (Cascade, Battle Mode, Subagents, MCP, Browser, Knowledge, CEL, Feature Flags)
Localharness architecturesdk-test-localharnessGo binary subprocess model, WebSocket protocol, connection lifecycle
Protobuf wire formatsdk-test-protobufEvery message type extracted from localharness_pb2.py
Authentication chainsdk-test-auth-chainAuth functions decompiled from authclient.* and auth.*
gRPC protocolsdk-test-grpc-protocolService descriptors from language_server_go_grpc.*
DeepSeek + Heartbeatsdk-test-deepseek-heartbeatPromptTemplaterType enum, DeepSeek integration

Cross-References