ARTEMIS is an autonomous multimodal Android agent and mobile UI automation platform engineered for physical devices and emulators. It combines state-of-the-art multimodal Vision-Language Models (VLMs) with hierarchical closed-loop planning, resilient self-healing, and deep Android subsystem integration. Key Features & Architectural Highlights: - Dual-Engine Orchestration: * Pro Engine: Multi-agent closed-loop (Planner -> Operator -> Validator/Failure Analyzer -> Summarizer) powered by LangGraph. * Flash Engine: Ultra-fast reactive loop for deterministic, low-latency UI execution (<35 steps). - Multimodal Perception & Grounding: * Hybrid visual screenshot grounding, real-time OCR extraction, and XML accessibility hierarchy parsing. * Dynamic-First, Coordinate-Fallback locating strategy for maximum resilience against UI drift. - Autonomous Self-Healing & Diagnostics: * Failure analyzer and safety net for popup dismissal, crash recovery, and auto-retry. * Diagnostic sub-agents for log analysis, video recording inspection, and object detection. - Unified CLI & Python SDK: * Rich CLI with commands: init, doctor, run, trace, batch, bench, server, and mcp. * Fluent Python SDK with Pydantic structured output models and package locking. - Multi-Provider LLM Architecture: * Support for Google Gemini, OpenAI, Anthropic Claude, Vertex AI, OpenRouter, xAI Grok, and local endpoints (Ollama/vLLM). * Centralized configuration in config/artemis.jsonc. - Native MCP & Observability: * Model Context Protocol (MCP) server endpoints for AI IDEs. * Full trace recording with before/after screenshots, action overlays, and execution replays. Change-Id: I430b93ee2b76b54cc5a3c6eeccd15d2cf29830a1
254 lines
6.3 KiB
Python
254 lines
6.3 KiB
Python
# Copyright 2026 Google LLC
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
"""Unified configuration package and single entry point for ARTEMIS settings, paths, and models."""
|
|
|
|
from artemis.config.agent import (
|
|
AgentGlobalConfig,
|
|
CheckerConfig,
|
|
CommitteeConfig,
|
|
ExplorerConfig,
|
|
FlashProfileConfig,
|
|
OutputterConfig,
|
|
PlannerValidationConfig,
|
|
ProProfileConfig,
|
|
StepSummarizerConfig,
|
|
VideoAnalyzerConfig,
|
|
load_agent_config,
|
|
resolve_explorer_version,
|
|
)
|
|
from artemis.config.constants import (
|
|
AGENT_CONFIG_FILENAME,
|
|
DATA_ENGINE_DB_FILENAME,
|
|
DEFAULT_ACTION_TIMEOUT,
|
|
DEFAULT_ADB_HOST,
|
|
DEFAULT_ADB_PORT,
|
|
DEFAULT_EDGE_MONITOR_PORT,
|
|
DEFAULT_EXPLORER_VERSION,
|
|
DEFAULT_GATEWAY_PORT,
|
|
DEFAULT_MODEL,
|
|
DEFAULT_PROFILE,
|
|
DEFAULT_STREAM_PING_INTERVAL,
|
|
DOTENV_FILENAME,
|
|
ENV_ADB_DEVICE_SERIAL,
|
|
ENV_ADB_HOST,
|
|
ENV_ADB_PORT,
|
|
ENV_ADB_SERVER_SOCKET,
|
|
ENV_ANTHROPIC_API_KEY,
|
|
ENV_ANTIGRAVITY_APP_DIR,
|
|
ENV_ANTIGRAVITY_LS_ADDRESS,
|
|
ENV_DATA_ENGINE_DB_PATH,
|
|
ENV_EVENTS_OUTPUT_PATH,
|
|
ENV_GCP_API_KEY,
|
|
ENV_GEMINI_API_KEY,
|
|
ENV_GOOGLE_API_KEY,
|
|
ENV_KEEP_VIDEOS,
|
|
ENV_ARTEMIS_APP_DIR,
|
|
ENV_ARTEMIS_CLOUD_GATEWAY_URL,
|
|
ENV_ARTEMIS_CLOUD_MODE,
|
|
ENV_ARTEMIS_CLOUD_SESSION_ID,
|
|
ENV_ARTEMIS_DEBUG,
|
|
ENV_ARTEMIS_DEFAULT_MODEL,
|
|
ENV_ARTEMIS_DEFAULT_PROFILE,
|
|
ENV_ARTEMIS_DEVICE_ID,
|
|
ENV_ARTEMIS_EDGE_PORT,
|
|
ENV_ARTEMIS_EXPLORER_VERSION,
|
|
ENV_ARTEMIS_IPC_PORT,
|
|
ENV_ARTEMIS_MCP_SERVER,
|
|
ENV_ARTEMIS_TENANT_ID,
|
|
ENV_ARTEMIS_TENANT_TOKEN,
|
|
ENV_ARTEMIS_TRACES_DIR,
|
|
ENV_ARTEMIS_USE_FILE_API,
|
|
ENV_ARTEMIS_USE_USER_DIR,
|
|
ENV_OPEN_ROUTER_API_KEY,
|
|
ENV_OPENAI_API_KEY,
|
|
ENV_OPENAI_BASE_URL,
|
|
ENV_RESULTS_OUTPUT_PATH,
|
|
ENV_XAI_API_KEY,
|
|
IPC_PORT_FILENAME,
|
|
LLM_CONFIG_FILENAME,
|
|
LLM_CONFIG_OVERRIDE_FILENAME,
|
|
LS_ADDRESS_FILENAME,
|
|
AgentNode,
|
|
AgentNodeWithFallback,
|
|
ExplorerVersion,
|
|
LLMProvider,
|
|
LLMUtilsNode,
|
|
LLMUtilsNodeWithFallback,
|
|
)
|
|
from artemis.config.llm import (
|
|
CyFunctionDetector,
|
|
LLM,
|
|
LLMConfig,
|
|
LLMConfigUtils,
|
|
LLMWithFallback,
|
|
deep_merge_llm_config,
|
|
get_default_llm_config,
|
|
initialize_llm_config,
|
|
load_llm_config_override,
|
|
parse_llm_config,
|
|
validate_vertex_ai_credentials,
|
|
)
|
|
from artemis.config.output import (
|
|
OutputConfig,
|
|
prepare_output_files,
|
|
record_events,
|
|
)
|
|
from artemis.config.paths import (
|
|
CONFIG_DIR,
|
|
GLOBAL_APP_DIR,
|
|
GLOBAL_JETSKI_DIR,
|
|
ROOT_DIR,
|
|
get_app_dir,
|
|
get_config_path,
|
|
get_data_engine_db_path,
|
|
get_default_traces_path,
|
|
get_ipc_port_file,
|
|
get_ls_address_file,
|
|
get_temp_dir,
|
|
get_traces_dir,
|
|
is_frozen_bundle,
|
|
)
|
|
from artemis.config.runtime import (
|
|
cleanup_temp_dir,
|
|
clear_ipc_port,
|
|
clear_ls_address,
|
|
read_ipc_port,
|
|
read_ls_address,
|
|
write_ipc_port,
|
|
write_ls_address,
|
|
)
|
|
from artemis.config.settings import (
|
|
Settings,
|
|
settings,
|
|
)
|
|
|
|
__all__ = [
|
|
# Settings & Singleton
|
|
"Settings",
|
|
"settings",
|
|
# Paths & Dirs
|
|
"ROOT_DIR",
|
|
"CONFIG_DIR",
|
|
"GLOBAL_APP_DIR",
|
|
"GLOBAL_JETSKI_DIR",
|
|
"get_app_dir",
|
|
"get_traces_dir",
|
|
"get_default_traces_path",
|
|
"get_temp_dir",
|
|
"get_config_path",
|
|
"get_data_engine_db_path",
|
|
"get_ipc_port_file",
|
|
"get_ls_address_file",
|
|
"is_frozen_bundle",
|
|
# LLM Config & Models
|
|
"CyFunctionDetector",
|
|
"LLM",
|
|
"LLMWithFallback",
|
|
"LLMConfigUtils",
|
|
"LLMConfig",
|
|
"parse_llm_config",
|
|
"initialize_llm_config",
|
|
"get_default_llm_config",
|
|
"deep_merge_llm_config",
|
|
"load_llm_config_override",
|
|
"validate_vertex_ai_credentials",
|
|
# Agent & Tool Config
|
|
"AgentGlobalConfig",
|
|
"CheckerConfig",
|
|
"CommitteeConfig",
|
|
"ExplorerConfig",
|
|
"FlashProfileConfig",
|
|
"OutputterConfig",
|
|
"PlannerValidationConfig",
|
|
"ProProfileConfig",
|
|
"StepSummarizerConfig",
|
|
"VideoAnalyzerConfig",
|
|
"load_agent_config",
|
|
"resolve_explorer_version",
|
|
# Output Config
|
|
"OutputConfig",
|
|
"prepare_output_files",
|
|
"record_events",
|
|
# Runtime & IPC State
|
|
"read_ipc_port",
|
|
"write_ipc_port",
|
|
"clear_ipc_port",
|
|
"read_ls_address",
|
|
"write_ls_address",
|
|
"clear_ls_address",
|
|
"cleanup_temp_dir",
|
|
# Types & Literals
|
|
"LLMProvider",
|
|
"ExplorerVersion",
|
|
"LLMUtilsNode",
|
|
"LLMUtilsNodeWithFallback",
|
|
"AgentNode",
|
|
"AgentNodeWithFallback",
|
|
# Filenames
|
|
"LLM_CONFIG_FILENAME",
|
|
"LLM_CONFIG_OVERRIDE_FILENAME",
|
|
"AGENT_CONFIG_FILENAME",
|
|
"DATA_ENGINE_DB_FILENAME",
|
|
"IPC_PORT_FILENAME",
|
|
"LS_ADDRESS_FILENAME",
|
|
"DOTENV_FILENAME",
|
|
# Defaults
|
|
"DEFAULT_ADB_HOST",
|
|
"DEFAULT_ADB_PORT",
|
|
"DEFAULT_GATEWAY_PORT",
|
|
"DEFAULT_EDGE_MONITOR_PORT",
|
|
"DEFAULT_ACTION_TIMEOUT",
|
|
"DEFAULT_STREAM_PING_INTERVAL",
|
|
"DEFAULT_PROFILE",
|
|
"DEFAULT_MODEL",
|
|
"DEFAULT_EXPLORER_VERSION",
|
|
# Environment Variables
|
|
"ENV_ARTEMIS_APP_DIR",
|
|
"ENV_ANTIGRAVITY_APP_DIR",
|
|
"ENV_ARTEMIS_USE_USER_DIR",
|
|
"ENV_ARTEMIS_TRACES_DIR",
|
|
"ENV_DATA_ENGINE_DB_PATH",
|
|
"ENV_ARTEMIS_CLOUD_MODE",
|
|
"ENV_ARTEMIS_CLOUD_SESSION_ID",
|
|
"ENV_ARTEMIS_CLOUD_GATEWAY_URL",
|
|
"ENV_ARTEMIS_TENANT_ID",
|
|
"ENV_ARTEMIS_TENANT_TOKEN",
|
|
"ENV_ARTEMIS_EDGE_PORT",
|
|
"ENV_ARTEMIS_IPC_PORT",
|
|
"ENV_ANTIGRAVITY_LS_ADDRESS",
|
|
"ENV_ARTEMIS_MCP_SERVER",
|
|
"ENV_ADB_DEVICE_SERIAL",
|
|
"ENV_ARTEMIS_DEVICE_ID",
|
|
"ENV_ADB_HOST",
|
|
"ENV_ADB_PORT",
|
|
"ENV_ADB_SERVER_SOCKET",
|
|
"ENV_GOOGLE_API_KEY",
|
|
"ENV_GEMINI_API_KEY",
|
|
"ENV_GCP_API_KEY",
|
|
"ENV_OPENAI_API_KEY",
|
|
"ENV_OPENAI_BASE_URL",
|
|
"ENV_ANTHROPIC_API_KEY",
|
|
"ENV_OPEN_ROUTER_API_KEY",
|
|
"ENV_XAI_API_KEY",
|
|
"ENV_ARTEMIS_EXPLORER_VERSION",
|
|
"ENV_ARTEMIS_DEFAULT_PROFILE",
|
|
"ENV_ARTEMIS_DEFAULT_MODEL",
|
|
"ENV_ARTEMIS_USE_FILE_API",
|
|
"ENV_KEEP_VIDEOS",
|
|
"ENV_ARTEMIS_DEBUG",
|
|
"ENV_EVENTS_OUTPUT_PATH",
|
|
"ENV_RESULTS_OUTPUT_PATH",
|
|
]
|