# Artemis Docs > User documentation for deploying and using Artemis, including Discovery tutorials for driving Artemis through the CLI with a coding agent. This file contains all documentation content in a single document following the llmstxt.org standard. ## FAQs ## Artemis value-add ### I can get ChatGPT to rewrite my code, why should I use Artemis? The value-add in Artemis is in the scalability and credibility Artemis adds to the code reworking process. While you can get ChatGPT to rewrite code, this means copying lines of code or uploading code file-by-file to ChatGPT and ctrl+c/ctrl+v-ing the reworked code back on to your codebase. This is rather cumbersome, and at the same time you have no way to verify if the code you receive is accurate. Artemis lets you scan entire codebases, retrieve sub-optimal code, prioritise which parts of the codebase to rework, receive improved code suggestions, and evaluate them for backward compatibility, functional correctness, security, and performance. We visualised this to make it clearer: ![Artemis value proposition](./img-faq/value-proposition-1.png) ### What's the difference between Artemis and Github Copilot? See the breakdown below: ![Artemis vs Github](./img-faq/faq-github-1.png) ## Programming Languages ### Which programming languages does Artemis support? Python, C++, C, Fortran, Java, JavaScript, TypeScript, Ruby, PHP, C#, Go, Swift, Kotlin, Scala, Rust, Dart, R, Lua, Perl, SQL, Elixir, Plain Text, Q, COBOL, OCaml. ## Working with LLMs ### What does Artemis do to ensure that LLM output is accurate and valid? Artemis has incorporated a set of scorers, which check the code output of LLMs for selected criteria. See the metrics we use for scoring here: [Evaluate code versions](optimization/code-validation/code-validation-overview.md). Further, we include validation tools to ensure that code will compile. These do a check of accuracy and validity of the code output. However, we also strongly advice users to check LLM output to ensure that the code versions meet the accuracy, quality, and validity standards against their own criteria. ### What does Artemis do to mitigate LLM hallucinations? We use multiple LLMs to generate responses, which allows us to gauge LLM output against each other. As it is highly unlikely for all LLMs to hallucinate the same way, it is easy to filter out misleading information. We also use scoring and validation techniques to evaluate the quality of the code output generated by LLMs, so that even if invalid code output is produced, they are filtered out before proceeding to next stages of the software development lifecycle. ### What does Artemis do to mitigate any risks of unfairness, bias, toxicity, abuse, or misinformation? For code output, we include scoring and validations to check on the functional accuracy and security of the code. For the chat components, Artemis often looks at a set of code files and documents provided as sources, so that the LLMs have high-quality material to extract information. However, we do not have control over the training material used during the training process of the LLMs, and as such are unable to completely remove harmful content. ### What does Artemis do to prevent copyrighted material from being generated by LLMs and included in LLM outputs? Artemis is able to integrate third-party tools into the platform, including tools that can monitor plagiarism in code. Based on user needs, we are able to integrate such tools into specific installations of Artemis. However, we do not have control over the training material used during the training process of the LLMs, and therefore are unable to completely guarantee the prevention of copyrighted material seeping into LLM output. ### Can Artemis change my code without my knowledge? No, Artemis takes a developer-in-the-loop approach to code optimisation, which means a user has complete control to decide whether or not to incorporate a code change into the codebase. We provide a suite of tools to help users make informed decisions about incorporating code changes into codebases, and further encourage users to make their own accuracy and validation checks. ## Deployment ### How can I get access to Artemis? See details on our [Deployment options](./deployment/deployment-options.md) page. ### What infrastructure do I need to install Artemis? This depends on the nature of your deployment. For on-premise deployments, see minimum and recommended requirements on our [On-premise deployment](./deployment/on-prem/index.mdx) page. ### How much time does it take to deploy Artemis? This will largely depend on your infrastructure and preferred mode of deployment, but roughly, - Online deployment: 15-40 minutes - Offline deployment: 45 minutes-1 hour ## Technical details ### How do you ensure data encryption at rest and in transit? For data in transit, communication between services happens in an isolated network environment, so data transmission is secure. For efficiency, we don't encrypt data by default, but can do so based on client requirements. ### What are the authentication mechanisms used? The system relies on a custom OAuth2 server flow. The authentication mechanism supports the following grants and features: - Password Grant: Enables user login using password credentials. - Refresh Token Grant: Allows users to obtain a new access token through a refresh token. - Client Credentials Grant: Facilitates machine-to-machine authentication. - JWT Usage: Enhanced security is achieved through the use of JSON Web Tokens (JWT), incorporating scopes and permissions for controlled access. - LDAP Integration: Additionally, custom LDAP authentication is supported, providing an additional layer of security within this mechanism. ### How is role-based access control (RBAC) implemented and managed? Role-Based Access Control is implemented with three distinct user roles, each with specific permissions and responsibilities. ### What is your backup frequency and retention policy? This depends on each client installation. We allow the flexibility to the client to choose preferred data backup frequency and policies for data retention. ### What are your monitoring tools and practices? - Sentry for live logs, if enabled on the client side. - Kubernetes Dashboard that can monitor all services. ### How do customers access performance and usage reports? Clients can access either Sentry or the Kubernetes dashboard, and they are also able to access all this information in the platform itself. ### What are the security and compliance certifications you hold (e.g ISO/IEC 27001)? We are in the process of getting ISO/IEC 27001 and SOC2 certifications. We follow industry best practice in securing our platform. We continuously scan all our code, all the external dependencies used in the platform, and all the pre-built images. See more information on security scanning of images here: [Artemis security scanning](../docs/deployment/image-scanning-security.md). ## Security, Privacy & Data Ownership ### How does Artemis keep my code safe? Artemis is built to keep your code isolated and protected at every step. - **Isolated Git servers**: Your code is stored in a private, sandboxed Git environment. Nothing touches your local machine unless you explicitly approve it. - **No training on your code**: Artemis never uses your repository data for fine-tuning or model training. - **Controlled access**: Tasks run in containerised sandboxes with no external network access, ensuring your code never leaks. The goal is simple: your code stays yours — isolated, encrypted, and handled with strict safeguards throughout. ### Do I own the code generated on Artemis? Yes. You fully own the code that Artemis generates or modifies for your project. It's yours to use, edit, licence, or ship however you choose. Artemis does not claim any rights over your outputs. ### Is my code ever used for training? No. Artemis does not use your code for fine-tuning, dataset creation, or any other form of model training. ### Does Artemis store or retain my repository data? Artemis does not retain your repository beyond what is required to run your workflows. If you delete your project, the cloned repo and related data are removed in accordance with our data handling policy. ## Customer support ### What are your customer support hours and channels? Artemis has a built-in customer support portal that allows users to directly send across queries/report bugs. Alternatively, support queries can also be sent to support@turintech.ai. We aim to respond to all queries within 2 business days. Additionally, we provide a dedicated contact point (available via email/Microsoft Teams/Slack) to enterprise clients. The dedicated support personnel will work with enterprise clients to see how the platform can fit to specific workflows and use cases. :::info Got more questions? Write to us at support@turintech.ai. We aim to respond within 2 business days. ::: --- ## Artemis architecture ## High-level overview This is a high-level overview of the Artemis architecture: ## Detailed Architecture Here are additional details on the Artemis architecture: ## Glossary ### Components and APIs #### Artemis Frontend The Artemis web application — the pages you see in your browser. It is the only part of the platform that can be reached from outside without logging in; everything else requires authentication. #### API Gateway The front door for all traffic. Every request from the web app or the CLI passes through the gateway, which forwards it to the right service behind the scenes. #### Falcon Optimisation API The heart of the platform. Falcon keeps track of everything about your projects — the code versions Artemis generates, their scores, and their validation results — and powers the Discover module, including experiment runs and the experiment memories behind Agents Memory. It also keeps your project's repository in sync with your git provider (GitHub, GitLab, Bitbucket, or Azure DevOps) and pushes live updates to your browser as work progresses. #### Users API Looks after everything to do with people and access: signing up, logging in, roles and permissions, user profiles, and connecting to your company directory via LDAP. #### Loki Task API The platform's task coordinator. When something needs to run — a build, a test, a benchmark — Loki decides which worker or runner picks it up, and broadcasts progress updates so the UI can show live status. #### Agent Management API Keeps track of every AI agent run on the platform: starting them, monitoring them, and cancelling them when asked. Agents can launch other agents, and their progress is checkpointed along the way — so if a run fails, it can pick up from the last good step instead of starting over. #### Code Warden API The service behind the Maintain module. It stores your code-quality rules, runs AI scans of your codebase against them, keeps a record of the issues found, and kicks off AI agents to fix them. #### Quest API The service behind planning in the Build module. When the Planning Agent breaks your goal into a structured plan — initiatives, epics, tasks, and subtasks — Quest stores that plan, tracks how tasks depend on each other and how far along each one is, and streams the agent's output to your screen as the plan takes shape. #### LLM API The single door to every AI model the platform can use. It natively supports providers such as OpenAI, Anthropic, Google, AWS Bedrock, and OpenRouter, plus custom endpoints — and it's where model provider profiles, credentials, and presets are managed. ### Workers Workers are the background processes that do the heavy lifting. They pick up tasks from a queue and report progress back to the platform. #### Agentkit Worker The engine that actually runs the AI agents. Whenever an agent works on your code — in Build, Maintain, Discover, or Optimise — it is an Agentkit worker doing the work, talking to the platform services and AI models along the way. #### Celery Worker Handles Falcon's background chores, such as checking your git provider for new commits and letting Code Warden know when the code has changed. #### PR Create Worker Opens pull requests on your git provider with the code changes Artemis generated. #### Utility Worker Prepares code suggestions for download. ### Infrastructure #### Data stores - **PostgreSQL** — used by most platform services as their main database, including for agent run checkpoints - **MongoDB** — used by the Users API, the Agent Management API, and the Loki Task API for their internal data - **Redis** — used for caching and for queueing background jobs - **MinIO** — used for storing project files and build artefacts (S3-compatible object storage) #### Messaging - **Kafka** — used to stream live status updates to the UI - **RabbitMQ** — used to hand out tasks to workers #### Git - **Gitea** — used to keep an internal copy of each project's repository inside the platform #### Observability - **Grafana Loki & Alloy** — used to collect logs from every service for monitoring and troubleshooting ### Artemis Runner The [Artemis Runner](../features/artemis-runner.md) is a small program you run on your own hardware, outside the platform. It talks to the platform over REST: it receives build, test, and benchmark commands from the Loki Task API, executes them against a local copy of your code, and sends results, logs, and performance metrics back to the platform through Falcon. --- ## Embedding models in Artemis | Model | Description | Cloud Provider | |------------------------------|----------------------------------------|----------------| | OpenAI Text Embeddings 3 Small | Small embedding model from OpenAI | OpenAI | | OpenAI Text Embeddings 3 Large | Large embedding model from OpenAI | OpenAI | | OpenAI Text Embeddings 3 Ada | Ada embedding model from OpenAI | OpenAI | | Cohere English V3 | Cohere English V3 Embedding Model | Cohere | --- ## LLMs in Artemis Artemis supports a set of built-in LLM providers out of the box. You can also bring your own LLM by configuring a custom provider profile — see [Adding a custom LLM](#adding-a-custom-llm) below. --- ## OpenAI | LLM | Description | Cloud Provider | |---------------|--------------------------------------------------------------------|----------------| | GPT-5.6 Sol | High-capability GPT-5.6 variant optimized for reasoning tasks. | OpenAI | | GPT-5.6 Terra | GPT-5.6 variant with broad knowledge and strong code generation. | OpenAI | | GPT-5.6 Luna | Lightweight GPT-5.6 variant balancing speed and quality. | OpenAI | | GPT-5.5 | Flagship GPT-5.5 model with advanced reasoning and creativity. | OpenAI | | GPT-5.4 Mini | Compact GPT-5.4 variant optimized for speed and cost-efficiency. | OpenAI | | GPT-5.4 Nano | Ultra-lightweight GPT-5.4 variant for fast, low-cost inference. | OpenAI | ## Anthropic (Claude) | LLM | Description | Cloud Provider | |-----------------|--------------------------------------------------------------------|----------------| | Claude Sonnet 5 | Mid-tier Claude 5 model with balanced speed and intelligence. | Anthropic | | Claude Opus 4.8 | High-performance Claude model with strong reasoning capabilities. | Anthropic | ## Google (Gemini) | LLM | Description | Cloud Provider | |------------------------|--------------------------------------------------------------------|------------------| | Gemini 3.1 Pro Preview | Google's latest high-end multimodal model, preview release. | Google Vertex AI | ## Z.ai | LLM | Description | Cloud Provider | |---------|--------------------------------------------------------------------|----------------| | GLM 5.2 | High-performance model from Z.ai with strong multilingual support. | Z.ai | --- ## Adding a custom LLM Artemis supports bringing your own LLM provider. Configuration is done in the Artemis UI under **Settings → Models → Profiles** — no deployment config changes are needed. **Step 1 — Create a provider profile** Go to **Settings → Models → Profiles** and create a new profile for your LLM provider. You will need the provider's API endpoint and credentials (API key or equivalent). **Step 2 — Add models to the profile** Within the profile, add the specific models you want to make available. Each model entry maps a name to the provider's model identifier. **Step 3 — Set token costs** For each model, fill in the input and output token costs. This is required for per-user cost tracking to work correctly — profiles with missing costs will not report accurate usage. **Step 4 — Select models under Presets** Go to **Settings → Models → Presets** and select which models from your profile should be active. Presets control which models are available for each task type (chat, coding, scoring, etc.) across the platform. :::note On-premise deployments As of v3.0.0, LLM configuration has moved entirely to the UI. It is no longer part of the deployment config file. ::: --- ## Scoring models in Artemis | Model | Description | Cloud Provider | |------------------------------|-----------------------------------------------|----------------| | Cohere English V3 | Cohere English V3 Reranker | Cohere | | Mixedbread AI Embed Large V1 | The crispy sentence embedding family from Mixedbread AI. | Self-hosted | --- ## Windows Local Installation Wizard > **Note:** This guide is specifically designed for Intel AI machines running Windows OS. ## Overview The Artemis Windows Local Installation Wizard (`ArtemisWizard.exe`) automates the installation and configuration of Artemis on Windows systems with Intel AI hardware. The wizard performs system verification, handles Docker image management, configures OpenVINO, and sets up the Artemis platform. ## Prerequisites ### System Requirements - **Operating System:** Windows 10 or Windows 11 - **WSL 2:** Windows Subsystem for Linux 2 enabled and configured - **Docker Desktop:** Latest version installed and running - **WSL Distribution:** Ubuntu Linux (latest version, see [Issue #5](#issue-5-ubuntu-version-incompatibility) for installation instructions) - **Administrator Access:** Required for installation ### Software Dependencies - Docker Desktop with Docker Compose - Docker Hub account with registry access - Intel GPU drivers (for OpenVINO) ## Installation Package **Download:** [ArtemisWizard.exe](https://files.artemis.turintech.ai/deployment/ArtemisWizard.exe) > **Note:** Credentials are required to access the download. Contact TurinTech for access credentials. **Installation:** Execute `ArtemisWizard.exe` to launch the installation wizard. ## Installation Procedure Follow the installation steps below to complete the Artemis installation. ### Step 1: System Verification The wizard performs automated system verification to ensure the environment meets installation requirements. **Verification Checks:** 1. **Container Environment:** - Docker Desktop service status - Docker Compose availability 2. **System Resources:** - CPU core availability - Memory capacity - Storage space **Default Configuration:** - Docker Compose is included with Docker Desktop - Docker Desktop allocates 8 CPU cores by default - Adjust resource allocation in Docker Desktop settings if additional cores are available **Procedure:** 1. Review verification results 2. Click **Next** to proceed :::note **WSL 2 Configuration:** Ensure WSL 2 is installed and enabled in Docker Desktop. Docker Desktop will prompt for WSL 2 installation if not detected. ::: ### Step 2: Authentication The wizard authenticates with the Docker registry using preconfigured credentials. **Prerequisites:** - Docker Hub account with registry access - WSL 2 installed and configured (required for Docker on Windows) **Procedure:** 1. Verify Docker Hub registry access 2. Click **Next** to initiate Docker authentication :::note **Expected Behavior:** Docker Desktop may launch automatically and display a login window. Complete the authentication process before proceeding. ::: ### Step 3: Requirements The wizard downloads all required Docker images for Artemis deployment. **Procedure:** 1. Click **Pull Images & Continue** to download or update Docker images 2. Wait for image download to complete. All successfully downloaded images are marked with a checkmark 3. Click **Next** to proceed ### Step 4: Configuration Configure Artemis service ports and OpenVINO deployment method. **Port Configuration:** | Service | Default Port | Description | |---------|--------------|-------------| | HTTP | 81 | HTTP service port | | HTTPS | 443 | HTTPS service port | > **Note:** Modify ports if conflicts exist with other applications. **OpenVINO Deployment Method:** **Option A: Container Runtime (Docker) — Recommended** - **Requirements:** - Ubuntu WSL2 Linux distribution 24.04 or later (see [Issue #5](#issue-5-ubuntu-version-incompatibility)) - Latest Intel GPU drivers - **Procedure:** Click **Next** to proceed with containerized deployment **Option B: Native Deployment** - **Requirements:** - Python 3.9–3.12 - Git installed - Latest Intel GPU drivers - **Procedure:** 1. Click **Run Setup** for immediate installation, or 2. Click **Create Shortcut** to create a desktop shortcut for later installation 3. Monitor installation logs for completion status **Procedure:** 1. Configure ports and OpenVINO deployment method 2. Click **Save & Continue** ### Step 5: OpenVINO Verification The wizard verifies OpenVINO deployment prerequisites. **Verification Checks:** | Component | Description | |-----------|-------------| | Intel GPU Driver | Validates latest Intel GPU driver installation | | WSL Version | Verifies WSL 2 configuration | | Linux Distribution | Checks Ubuntu distribution compatibility | | GPU Passthrough | Validates GPU passthrough configuration | **Procedure:** 1. Review verification results 2. Resolve any failed checks before proceeding 3. Click **Next** to continue :::note **OpenVINO Connection Endpoints:** Reference these endpoints when configuring OpenVINO: - `http://host.docker.internal:8000/v3` - `http://ovms:8000/v3` ::: ### Step 6: Installation The wizard deploys Artemis services and creates the default administrator account. **Deployment Procedure:** 1. Click **Start Deployment** to initiate installation 2. Wait for all services to deploy (process is automated) **Administrator Account Setup:** 1. Enter administrator credentials: - Username - Password 2. Click **Create Admin User** 3. Click **Next** to continue ### Step 7: Completion Installation is complete. **OpenVINO Model Verification:** The wizard performs a test query against the OpenVINO model deployment to verify functionality. **Post-Installation:** 1. **Desktop Shortcuts:** The following shortcuts are created automatically: - **Artemis Platform:** Launch Artemis web interface (ArtemisWizard.exe icon) - **OpenVINO:** Launch OpenVINO (created if native deployment was selected in Step 4) 2. **Access Artemis Platform:** - Click **Open Artemis** to launch the web interface in your default browser - Authenticate using the administrator credentials created in Step 6 ![ArtemisWizard.exe Desktop Shortcuts](/img/install-wizard/icons.png) ## Post-Installation Configuration ### Initial Platform Setup Complete the following one-time configuration after first login: 1. Navigate to **Settings** (⚙️ icon, top-right) 2. Select **Users** from the sidebar 3. Locate the **System Admin Balance** column 4. Click **Edit** 5. Enter an initial balance (e.g., 50) 6. Click **Apply** > **Note:** This configuration is required to unlock full platform functionality. ### OpenVINO Connection Verification Verify OpenVINO model connectivity: 1. Ensure Artemis services are running 2. Log into the Artemis platform 3. Navigate to **Chat** (top-right) 4. Submit a test query 5. Verify model response to confirm successful connection ## Troubleshooting ### System Requirements **General Requirements:** - Docker Desktop requires WSL 2 on Windows - Artemis supports multiple platform configurations **OpenVINO Requirements:** - Ubuntu 20.04 or higher (required for GPU passthrough via DXG) - Python 3.9–3.12 - More restrictive platform requirements than Artemis core ### Common Issues #### Issue 1: Python Version Compatibility **Symptoms:** OpenVINO setup fails with incompatible Python version error. **Resolution:** 1. Download Python 3.12.10 (64-bit): [Python 3.12.10](https://www.python.org/downloads/release/python-31210/) 2. Install Python and verify version (3.9–3.12) 3. Ensure Python is added to system PATH during installation 4. Restart the installation wizard #### Issue 2: Docker Service Not Running **Symptoms:** Installation fails with Docker-related errors. **Resolution:** 1. Verify Docker Desktop service status 2. If issues persist, perform a full restart: - Open Task Manager (`Ctrl + Shift + Esc`) - Terminate all Docker-related processes - Restart Docker Desktop #### Issue 3: VPN Connectivity Issues **Symptoms:** Docker or OpenVINO connectivity failures during installation. **Resolution:** 1. Disconnect from VPN temporarily 2. Complete installation 3. Reconnect to VPN after installation 4. Configure VPN exceptions for Docker if required #### Issue 4: Missing GPU Drivers **Symptoms:** OpenVINO operates in CPU-only mode or fails to detect GPU. **Resolution:** 1. In the wizard, click **Intel GPU (Required)** 2. Download the latest Intel GPU driver from the opened page 3. Install the driver 4. Return to the wizard and verify GPU detection #### Issue 5: Ubuntu Version Incompatibility **Symptoms:** OpenVINO fails due to unsupported Ubuntu version. **Resolution:** Upgrade WSL 2 Ubuntu distribution to 20.04 or later: ```bash wsl --status wsl --list --online wsl --install -d Ubuntu-24.04 wsl --set-default Ubuntu-24.04 ``` > **Note:** OpenVINO requires Ubuntu 20.04 or higher for GPU passthrough. Ensure GPU drivers are installed after upgrading. ## Reference ### System Requirements Summary | Component | Requirement | |-----------|-------------| | Operating System | Windows 10/11 with WSL 2 | | Docker Desktop | Latest version, running | | WSL Distribution | Ubuntu 20.04 or later | | Access Level | Administrator privileges | ### Registry Access - Docker Hub account with registry access required - WSL 2 must be installed (required for Docker on Windows) - If WSL 2 was not installed during Docker Desktop setup, install manually before proceeding ### OpenVINO Endpoints When configuring OpenVINO, reference these connection endpoints: - `http://host.docker.internal:8000/v3` - `http://ovms:8000/v3` --- ## Overview Artemis on AI PC enables you to run Artemis entirely on your local machine using Intel AI hardware. All AI processing, including large language models (LLMs), runs locally on your device, ensuring complete privacy and data security. This section provides comprehensive guides for installing and using Artemis on Intel AI-powered Windows machines. ## What is Artemis on AI PC? Artemis on AI PC is a local deployment solution designed specifically for Intel AI machines running Windows OS. It leverages local GPU acceleration and on-device AI models (such as Qwen 3 4B) to provide powerful code analysis, optimization, and development assistance without sending your code to external servers. ### Key Benefits - **Complete Privacy**: All code and AI interactions remain on your local machine - **Offline Capability**: Internet access is optional; all processing runs directly on your hardware - **High Performance**: Leverages Intel GPU acceleration for fast AI processing - **Full Control**: Complete control over your development environment and data ## Getting Started ### Installation Start by installing Artemis on your Intel AI machine using the Windows Local Installation Wizard: - **[Windows Local Installation Wizard](./local-installation-wizard.md)**: Step-by-step guide to install Artemis on Windows with WSL 2, Docker Desktop, and OpenVINO support. This wizard automates the entire setup process, from checking system requirements to deploying Artemis and creating your admin account. ## Workflows Once Artemis is installed, you can use the following workflows to enhance your development process: ### Code Optimization - **[Standalone Optimisation](../use-cases/local-deployment/optimisation.md)**: Improve code performance and reduce resource usage using local AI models. This workflow guides you through: - Importing projects and creating optimization targets - Scoring code blocks to identify optimization opportunities - Generating optimized code versions using one-shot updates or multi-version optimization with Artemis Intelligence - Validating and integrating optimizations into your codebase ### Code Audit - **[Code Audit](../use-cases/local-deployment/audit.md)**: Perform comprehensive code analysis to identify security vulnerabilities, bugs, and code quality issues. This workflow covers: - Configuring audit rules and customizing rule importance levels - Running scans to identify code issues - Reviewing findings and prioritizing fixes - Automatically fixing issues using local AI assistance - Creating pull requests to integrate fixes ### Code Exploration - **[Agentic Chat](../use-cases/local-deployment/agentic-chat.md)**: Explore your codebase using RAG (Retrieval-Augmented Generation) powered by local embeddings and the Qwen 3 4B model. This workflow enables you to: - Index your project for semantic code search - Ask questions about your codebase and receive answers with file references - Search for similar code patterns using embeddings - Understand code relationships and dependencies ### Strategic Planning - **[Agentic Planning](../use-cases/local-deployment/planning.md)**: Build strategic development plans using AI assistance. This workflow helps you: - Create structured development plans from high-level prompts - Break down features into actionable sub-plans - Track progress and validate plan items - Generate code and integrate plans into your Git repository ## Prerequisites All workflows in this section require: - **Hardware**: High-performance Intel® laptop with local GPU acceleration - **Operating System**: Windows 10 or Windows 11 with WSL 2 enabled - **Software**: Docker Desktop, latest Ubuntu Linux WSL distribution - **AI Models**: Local LLM (Qwen 3 4B model recommended) - **Internet**: Optional; all processing runs offline ## Next Steps 1. **Install Artemis**: Follow the [Windows Local Installation Wizard](./local-installation-wizard.md) to set up Artemis on your machine 2. **Choose a Workflow**: Select the workflow that matches your needs: - Optimize existing code → [Standalone Optimisation](../use-cases/local-deployment/optimisation.md) - Audit code for issues → [Code Audit](../use-cases/local-deployment/audit.md) - Explore and understand code → [Agentic Chat](../use-cases/local-deployment/agentic-chat.md) - Plan new features → [Agentic Planning](../use-cases/local-deployment/planning.md) 3. **Import Your Project**: Import your codebase into Artemis to start using these workflows ## Additional Resources - For deployment options and configurations, see [Deployment Options](../deployment/deployment-options.md) - For project setup and Git configuration, see [Project Setup](../project-setup/import-codebase.md) - For troubleshooting installation issues, refer to the troubleshooting section in the [Windows Local Installation Wizard](./local-installation-wizard.md) --- ## Make a Plan ## 1. Start a new plan In the **Build** section, switch the agent to **Plan** mode. Describe what you want to build in your own words, or pick one of the ready-made templates (Generate Benchmarks, Improve Security, Refactor the codebase, …). Choose a model, then send to start planning. ![start a plan](./img/plan2.png) ## 2. Answer the planning questions Artemis asks targeted questions to gather the context it needs. For each one you can pick a suggested option, write your own answer, or **Skip**. ![answer planning questions](./img/plan3.png) ## 3. Review the plan Artemis then proposes a plan — a summary of the approach on the right, and a **dashboard** in the middle with a progress bar and the tasks grouped by phase, each assigned to **you** or the **Agent**. Confirm the plan or ask for changes in chat. Click **Build Plan** to run the whole plan, or run tasks individually — see [Build and validate the plan](./build-and-validate-plan.md). ![review the plan](./img/plan4.png) Each task also has its own detail — a clear name, a description, and an AI-ready, repository-aware **prompt** you can copy or edit. ## 4. Export the plan Export the whole plan — phases, tasks, descriptions and assignments — as **Markdown**, **CSV** or **ZIP**, or turn it straight into a **Changeset**. Handy for documentation, sharing, or reviewing. ![export the plan](./img/plan8.png) ## 5. Update the plan Plans stay flexible. Ask the agent in chat to add, reorder, or refine tasks at any time — it asks a quick clarification, then applies the change to the plan. ![update the plan](./img/plan17.png) --- ## Next step Once your plan is ready, continue with **[Build and validate the plan](./build-and-validate-plan.md)** to execute the tasks. --- ## Build and Validate the Plan ## 1. Run the plan From the plan dashboard, execute the Agent-assigned tasks: - **Run one task** — click **Open Task** (or **Start Task**) on any task; independent tasks can run in parallel. - **Run the whole plan** — click **Build Plan** to work through every task automatically. While it runs, each task shows its status (**Draft Ready**, **Running**, **Queued**), and you can **Stop build** at any time. ![run the plan](./img/plan9.png) ## 2. Review the changes Open a drafted task and switch to **File changes** to see the full diff of every file it touched — review everything before you publish. ![review changes](./img/plan10.png) ## 3. Validate the changes Under **Validations → Run new validation**, pick your **runner** and the **commands** to run (they default to your project's build, test, and benchmark scripts — add or remove any), then click **Run validation**. If you haven't set up a runner or commands yet, see [Artemis Runner](../../features/artemis-runner.md) and [Runner and Scripts](../../project-setup/settings/runner-and-scripts.md). ![validate changes](./img/plan11.png) Each command reports **Passed** or **Failed** — expand any check to read its full logs. ![validation logs](./img/plan18.png) ## 4. Restart if needed If a task fails, or you simply want to redo the work, click **Restart** — it re-runs the plan and re-implements the tasks from a clean state. ![restart the plan](./img/plan19.png) --- Once you've reviewed and validated the changes, continue to **[publish them](./git-actions.md)**. --- ## Publish the Plan After reviewing and validating your changes, open a pull request straight from Artemis. ## Create a pull request From a task's **Create PR**, fill in the **branch name**, the branch you're **merging into**, a **title**, and a **description** — or click **Generate with AI** to have the agent write the title and description from the diff. Review the changed files below, then click **Create PR**. *(Prefer to push without opening a PR? Use **Publish** to send the change straight to a branch.)* ![create a pull request](./img/plan13.png) Once published, the pull request appears in your Git provider as usual — review, comment, or merge it there. Artemis keeps the task's status in sync automatically as the PR is merged or closed. --- Once all tasks are published and merged, your plan is complete. **Congratulations! 🎉** --- ## Plan Overview **Plan Mode** in Artemis helps you turn high-level ideas into complete, structured development roadmaps. Instead of working with isolated tasks, a plan lets you break down complex goals into organized, manageable steps — perfect for shipping new features, performing major refactors, or resolving multi-step issues. The **Artemis Web Planner** brings interactive, AI-driven planning directly to your browser. It asks focused questions to understand your intent, generates a well-structured plan without endless prompt refinement, and groups tasks into clear, logical phases. Everything is saved in **Artemis Cloud**, so your plans persist across devices, continue running even if your machine shuts down, and never interfere with your local development branches. Whether you’re drafting a new project, preparing a multi-feature roadmap, or coordinating across teams, Plan Mode gives you a structured space to design, build, and execute your development workflow. ## **Key Features** * **Interactive Planning** – Artemis gathers project context through targeted questions, ensuring the generated plan accurately reflects your goals. * **Automated Task Breakdown** – High-level objectives are converted into structured subtasks that build progressively toward your final deliverable. * **Agent & User Tasks** – Plans mix AI-driven actions with human tasks, giving you full control over where intervention, review, or domain expertise is required. * **Built-in Workflows** – Start from prebuilt templates for common scenarios, or create your own fully customized workflows. * **Phase-Based Task Hierarchy** – Tasks are grouped into phases with clear subtask hierarchies, making scope, dependencies, and execution order easy to understand. * **Git Integration** – Review, validate, and publish completed tasks as pull requests with seamless Git status tracking. * **Progress Tracking** – Visual indicators show the status of individual tasks and your plan’s overall completion. ## **Where to go next** The planning process in Artemis is split into three clear stages: 1. **[Make a Plan](./Make-plan.md)** – Create a new plan, answer project-scoping questions, and review the generated roadmap. 2. **[Execute & Validate the Plan](./build-and-validate-plan.md)** – Execute subtasks with the agent in sandbox environment, review code changes, and validate them using your runner. 3. **[Publish the Plan](./git-actions.md)** – Publish changes to Git, create pull requests, and track sync status. Each chapter builds on the previous one, guiding you from **planning → execution → delivery**. --- ## Chats **Chat** mode is an interactive, conversational way to work with Artemis. Choose a model, ask anything about your project, and get real-time help — the agent has full context of your codebase (see [indexing](../features/code-indexing.md)). ## 1. Start a chat Switch the agent to **Chat** mode, then ask a question in your own words, or pick one of the suggested prompts (Find Optimisation Targets, Project Issues Summary, Caching Opportunities, …). ![start a chat](./img/chat-1.png) ## 2. Get grounded answers Artemis replies with answers grounded in your actual code — citing the files and line ranges it's referring to — so you can explore, decide, and plan your next step. ![chat answer](./img/chat-2.png) ### Use Chat to: - **Clarify doubts** — ask about specific parts of your project, coding practices, or strategy. - **Get continuous support** — instant answers and advice without leaving the interface. - **Decide next steps** — suggestions for fixing bugs, adding features, or refactoring. ## Next Steps - [Plan a bigger task](./Plan/plan-overview.md) - [Give Artemis a coding task](./standalone) --- ## Build Overview The **Build** section of Artemis helps you improve and extend your project with the help of agents. It has three modes — **Chat**, **Plan**, and **Code** — and in each you can pick your preferred model. Open it by selecting your project and clicking **Build**: ![the Build section](./img/plan0.png) ### **[Chat Mode](chats.md)** A conversational interface, powered by an LLM with full context of your project (see [indexing](../features/code-indexing.md)). Ask questions, explore your codebase, and get grounded answers — from quick questions to complex decisions. ### **[Plan Mode](plans.md)** Turn a goal into a detailed, structured plan. Artemis asks clarifying questions, proposes tasks grouped by phase (some for you, some for the agent), then runs, validates, and publishes them. ### **[Code Mode](standalone.md)** Hand Artemis a self-contained coding task — fix a bug, add tests, harden a security issue — and get back a reviewable diff you can validate and turn into a pull request. Issues found in the [Scan](../scan/issues.md) section can be sent straight here. ## Next Steps - [Chat with Artemis](chats.md) - [Make a plan](plans.md) - [Give Artemis a coding task](standalone.md) --- ## Plans **Plan Mode** in Artemis enables you to create comprehensive development roadmaps by working interactively with AI agents. Unlike standalone tasks that focus on immediate code changes, plans help you break down complex objectives into structured, manageable steps — perfect for implementing new features, refactoring initiatives, or bug fixes that require careful planning. ## Key Features * **Interactive Planning** – Artemis gathers requirements by asking targeted questions about your project, ensuring a thorough understanding before generating the plan. * **Automated Task Breakdown** – Complex objectives are automatically divided into well-defined subtasks that build incrementally toward your goal. * **Agent & User Tasks** – Plans include both agent-automated tasks and user tasks, giving you control over which steps require human oversight. * **Built-in Workflows** – Choose from ready-to-go plan templates for common development scenarios, or create custom plans from scratch. * **Task hierarchy grouped by phase** - Tasks are structured into phases. Inside each phase, subtasks are presented in a clear hierarchy which gives you an organized view of scope, dependencies, and logical execution flow. * **Git Integration** – Each completed task can be reviewed, validated, and published as a pull request with automatic Git status tracking. * **Progress Tracking** – Monitor task completion with visual progress indicators and status updates throughout the plan execution. ## Step 1: Access the Plans Panel Navigate to the **Build** section and click on **Plans** in the sidebar, then click **New Plan** to begin. ![plan 1](./img/plan1.png) ## Step 2: Initialize Your Plan Enter your prompt describing what you want to build, or select from the ready-to-go plan templates. Choose your preferred model, then click the **Plan** button to start the planning process. ![plan 2](./img/plan2.png) ## Step 3: Answer Planning Questions Artemis will ask a series of questions to gather context and requirements for your plan. You can: * Select from suggested options * Write custom responses * Skip questioning by choosing "Stop questioning me and proceed with the Plan" ![plan 3](./img/plan3.png) ## Step 4: Review the Generated Plan After gathering requirements, Artemis creates a detailed plan summary that includes: * Project assessment and scope analysis * Complete list of subtasks with clear descriptions * Technical approach and reasoning * Incremental delivery strategy Review the plan carefully. You can: * **Yes, proceed** – Accept the plan and move to the Plan Dashboard * **No, let me adjust** – Request modifications to the plan * Continue asking questions for further refinement ![plan 4](./img/plan4.png) ## Step 5: Build or download the plan The **Plan Dashboard** displays all tasks in your plan with their current status. Each task shows: * **Step number** and **Task Status** (completed/in progress/not started) * **Task description** * **Agent Status** (Not Started, Running, Draft Ready, Agent Done) * **Git Status** (tracks PR status when tasks are published) * **Actions** (Start Task, View Task) ![plan 5](./img/plan5.png) ### Managing Tasks Click the **three-dot menu** next to any task to: * **Delete Task** – Remove tasks that are no longer needed * **Add Task Below** – Insert new tasks into the plan ![plan 6](./img/plan6.png) ### Adding Custom Tasks When adding a task, specify: * **Task Type** – Choose between **Agent** (automated) or **User** (manual) tasks * **Task Name** – A clear, descriptive name that appears in the dashboard * **Task Description** – Detailed instructions for completing the task * **Prompt** (for Agent tasks) – The specific instructions the agent will execute ![plan 7](./img/plan7.png) ### Monitor Execution Click **Start Task** to begin execution. The Agent Status will change to **Running**, and the button changes to **View Task**. ![plan 8](./img/plan8.png) ## Step 6: Review and validate Changes When a task completes, the Agent Status changes to **Draft Ready**. Click **View Task** to: * Review the generated code changes * Validate the implementation * Click **Publish Changes** to create a branch and pull request Alternatively, use the three-dot menu to publish changes directly from the dashboard. ![plan 9](./img/plan9.png) ## Step 7: Git Actions After publishing, the Git Status updates automatically to show: * **PR Open** – Pull request has been created * **PR Merged** – Changes have been merged into your codebase * **Agent Done** – Task completed successfully The progress bar at the top tracks overall plan completion. ![plan 10](./img/plan10.png) ### Viewing Pull Requests When you publish changes, Artemis creates a detailed pull request on GitHub with: * Clear description of changes made * Impact analysis * Technical implementation details ![plan 11](./img/plan11.png) ### Automatic Git Synchronization Once you merge the pull request, the Git Status in the Plan Dashboard automatically updates to **PR Merged**, keeping your plan status in sync with your repository. ![plan 12](./img/plan12.png) ## Managing Task Status You can manually change the status of any task by clicking on the **Task Status** icon. This allows you to mark tasks as: * **Skipped** – For tasks that are no longer needed or relevant * **Complete** – To manually mark tasks as completed This is useful for managing user tasks or adjusting the plan as your project evolves. ![plan 13](./img/plan13.png) ## Plan History All plans created for your project are saved and accessible from the Plans section. You can view: * Active plans in progress * Completed plans with full task history * Search and sort through past plans ![plan 14](./img/plan14.png) ## Next Steps - [Configure standalone builds](./standalone.md) - [Explore chat integration](./chats.md) - [Monitor plan performance](./overview.md) --- ## Code Use **Code** mode in the Build section to hand Artemis a self-contained coding task — fix a bug, add tests, harden a security issue — and get back a reviewable set of changes you can validate and turn into a pull request. ## 1. Describe the task Switch the agent to **Code** mode, describe the change you want in your own words (or pick a ready-made template such as *Fix a bug*, *Add Unit Tests for Coverage Gaps*, or *Harden Selected Security Issue*), choose a model, and send. ![start a coding task](./img/standalon-1.png) ## 2. Review the changes Artemis works the task and shows the result. **File changes** is a full diff of every file it touched; switch to **Validations** to run your build, test and benchmark checks. Use the **Chat** panel on the right to ask about the work. ![code changes](./img/standalon-2.png) ## 3. Publish When you're happy with it, **Create PR** to open a pull request, or **Publish** to push the change to a branch. See [Changesets](../features/changeset.md) for the full validate-and-publish flow. ## Next Steps * [Plan a bigger task](./Plan/plan-overview.md) * [Chat with Artemis](./chats.md) --- ## Deployment options Currently there are five options for you to access Artemis. See details below: ### Option 1: On artemis.turintech.ai You can access Artemis via the the web platform available at: (https://artemis.turintech.ai/). This page will prompt you to sign up for an Artemis account. Please note that to start using Artemis via the web platform, a TurinTech administrator has to verify your account. Additional material to help you set up: - Information regarding creating an Artemis account: [Signing up and logging in](../getting-started/signup-login.md) - Information regarding the Artemis configuration most suitable for you: [Onboarding questionnaire](./pre-deployment-qs-saas.md) - LLMs currently available within Artemis: [LLMs in Artemis](../architecture/llm-usage.md) - Clarifications about Artemis value-add, working with LLMs, and other technical details: [FAQs](../FAQs.md) - For additional queries, write to us at: support@turintech.ai ### Option 2: Deploy on premise This is where we deploy Artemis on-premise in your organisation. Here is additional information about on-premise deployments: - On-premise deployment support material: [On-premise deployment guide](../deployment/on-prem/index.mdx) - Pre-deployment questionnaire to understand your organisational needs: [Pre-deployment questionnaire](pre-deployment-qs-on-prem.md) - Architecture diagrams: [Artemis architecture](../architecture/architecture-diagram.md) - List of third-party services, libraries, and tools used by Artemis, with relevant licenses: [Third-party services and licenses](licenses.mdx) - LLMs currently available within Artemis: [LLMs in Artemis](../architecture/llm-usage.md) - Security scanning of Artemis images: [Artemis security scanning](./image-scanning-security.md) - Clarifications about Artemis value-add, working with LLMs, and other technical details: [FAQs](../FAQs.md) - For additional queries, write to us at: support@turintech.ai ### Option 3: Deploy on a dedicated environment on the TurinTech cloud We are able host a temporary, secure, and dedicated Artemis environment for you on our cloud. You will be able to access the platform with a unique URL. :::warning[In case you didn't know:] Associated costs apply. Contact our team via your dedicated TurinTech representative or at support@turintech.ai for more information on costs. ::: ### Option 4: Deploy on your cloud We are able to deploy Artemis on your cloud. ### Option 5: Pre-deployed on a laptop We are able to provide you a laptop with an installation of Artemis. Contact our team via your dedicated TurinTech representative or at support@turintech.ai for details. --- ## Artemis security scanning Artemis private images are hosted on Dockerhub, available at: https://hub.docker.com/. We conduct continuous security scanning of all images using the following tools: 1. [Aquasecurity trivy](https://github.com/aquasecurity/trivy) 2. [Docker scout](https://docs.docker.com/scout/) However, if you use alternative security tools, additional security vulnerability warnings might be triggered. For more clarifications regarding our security processes, get in touch via support@turintech.ai. --- ## Third-party services and licenses Artemis depends on the following open-source packages. All of these libraries and tools are licensed with open source licenses. ## Packages shipped in the release images The inventory below lists every third-party library and OS package shipped in the Artemis on-premise release images, together with its declared license. It is generated from the software bill of materials (SBOM) of the latest release, so it always reflects the version currently published. :::tip Package versions are intentionally omitted; the full SBOM is available to customers on request. ::: --- ## Windows Local Installation Wizard(Deployment) > **Note:** This guide is specifically designed for Intel AI machines running Windows OS. ## Prerequisites ### Operating System - Windows 10 or Windows 11 with WSL 2 (Windows Subsystem for Linux) enabled. ### Software - Docker Desktop (latest version, installed and running). - Latest Ubuntu Linux WSL distribution installed (see [issue #5](#issue-5-ubuntu-version-too-old) for installation instructions). ## Before You Begin Download the installation wizard executable: **[ArtemisWizard.exe](https://files.artemis.turintech.ai/deployment/ArtemisWizard.exe)** 🔐 You will be provided credentials by TurinTech to access this download. Once downloaded, run the `ArtemisWizard.exe` file to begin the setup process. ## Installation Steps ### Step 1 — Runtime and Compose This step checks: - Whether Docker Desktop is running. - Whether Docker Compose is available. Docker Compose is included by default in Docker Desktop. Once all checks are completed successfully, click **Next** to proceed. :::note **Important:** Double-check that WSL 2 is installed and enabled in Docker Desktop. If not already configured, Docker Desktop will prompt you to enable it. ::: ### Step 2 — System Resources The wizard evaluates your system's available resources to ensure sufficient capacity for running Artemis. **Requirements:** - Adequate CPU cores - Sufficient memory - Available storage space **Configuration Notes:** - Docker Desktop typically allocates 8 CPU cores by default - If additional cores are available, adjust Docker Desktop settings manually to allocate more resources **Action:** Click **Next** after reviewing your system specifications. ### Step 3 — Configure Registry Access The wizard includes preconfigured credentials for accessing the local image registry. **Prerequisites:** - You must be logged in to Docker Hub - Verify registry access in Docker Hub before proceeding - WSL 2 must be installed (required for Docker on Windows) **WSL 2 Installation:** If you weren't prompted to install WSL 2 during Docker Desktop installation, install it manually before continuing. **Action:** Click **Next** to sign in to Docker. :::note **Expected Behavior:** Docker Desktop may open automatically during this step. You should see a login window similar to the example below. You can minimize it if needed, but ensure the login completes successfully. ::: ### Step 4 — OpenVINO Requirement Check Before proceeding, ensure your system meets the OpenVINO requirements for your chosen installation method: - **Option A: Container Runtime (Docker) — Recommended** - Requirements: Latest ubuntu wsl2 linux distribution ([24.04](#issue-5-ubuntu-version-too-old)) and latest intel drivers. - If requirements are met, click **Next** to continue with the containerized OpenVINO setup. - **Option B: Native Installation** - Requirements: Compatible Python version (3.9–3.12), git installed and latest intel drivers. - If requirements are met, you can either: - Click **Run Setup** to immediately install OpenVINO natively, or - Click **Create Shortcut** and then double-click the shortcut on your desktop to simplify launching the native installer in the future (this may take several minutes). Monitor the installation logs for progress and confirmation of a successful setup. #### Verify Installation in Native installation Monitor the installation logs in the wizard for progress. :::note The installation process may take some time (10-15 minutes depending on your internet speed), as all required packages and dependencies are installed. The end goal is to have everything set up and ready to run. ::: Monitor the installation logs for the following critical line: #### Create and Test the Shortcut 1. Click **Desktop Shortcut** to create a desktop shortcut for OpenVINO 2. The OpenVINO shortcut will be created on your desktop 3. Double-click the shortcut to launch OpenVINO and wait for package installation to complete (this may take several minutes) ### Step 5 — Image Check This step ensures you have the latest Artemis Docker images locally. Click **Pull Images** to download or update them, then **Next** to proceed. ### Step 6 — Configuration This step allows you to customize key Artemis settings. **Default ports:** - HTTP: 81 - HTTPS: 443 You can change these if other applications already use them. Choose how OpenVINO will be deployed: - ✅ **Container Runtime checked**: Artemis will deploy OpenVINO in a container. - ☐ **Unchecked**: Artemis expects a native OpenVINO installation running locally. :::note **OpenVINO Connection Endpoints:** When using OpenVINO, you may need to reference these endpoints: - `http://host.docker.internal:8000/v3` - `http://ovms:8000/v3` ::: Click **Save Configuration**, then **Next** to continue. ### Step 7 — Deploy Artemis Click **Start Deployment** to begin or update your Artemis installation. The wizard will deploy all required services automatically. ### Step 8 — Admin Setup This step creates the default Admin User that you'll use to log into the Artemis platform. **Action:** 1. Enter admin user credentials 2. Click **Create Admin User** Once created, click **Next**. ### Step 9 — Complete Deployment is complete! A desktop shortcut to Artemis is automatically created. You can now use the provided credentials to log into the platform. **Launch Artemis** by clicking **Open Artemis**. This will launch Artemis in your browser! **Desktop Shortcuts Created:** The installation wizard has created the following desktop shortcuts for easy access: - **Artemis Platform:** Use this shortcut to launch the Artemis web interface - **OpenVINO:** Use this shortcut to launch OpenVINO (created in Step 4) ## Platform Stability & Configuration After first login: 1. Click the **Settings** ⚙️ icon (top-right). 2. Select **Users** from the sidebar. 3. Under the **System Admin Balance** column, click **Edit**. 4. Add an initial balance (e.g. 50) and click **Apply**. This one-time setup step is needed to unlock the full platform functionality. ## Verifying OpenVINO Model Connection 1. Ensure Artemis is running. 2. Log into the platform. 3. Click the **Chat** icon (top-right). 4. Type a short test phrase. If OpenVINO is correctly connected, the model will respond successfully. ## Troubleshooting ### Package and Platform Requirements #### General Requirements - Docker Desktop on Windows requires WSL2 - Artemis can run on any platform or flavor #### OpenVINO-Specific Requirements - Ubuntu 20.04 or higher (for GPU passthrough via DXG). OpenVINO also has specific requirements: it will not work with Ubuntu versions lower than 20. - Python 3.9 through 3.12 - Stricter platform requirements compared to Artemis ### Common Issues and Solutions #### Issue 1: Python Version Compatibility **Symptoms:** OpenVINO setup fails or reports incompatible Python version. **Solution:** 1. Download and install Python 3.12.10 (64-bit) from the official Python website: [Python 3.12.10 (64-bit)](https://www.python.org/downloads/release/python-31210/) 2. Verify the installed version is between 3.9 and 3.12 3. Ensure Python is added to your system PATH during installation 4. Restart the wizard and try again #### Issue 2: Docker Not Running **Solution:** 1. Verify Docker Desktop is running 2. If issues persist, perform a complete restart: - Open Task Manager (Ctrl + Shift + Esc) - End all Docker-related processes - Restart Docker Desktop #### Issue 3: VPN Connectivity Problems **Issue:** Docker or OpenVINO may experience connectivity issues when connected to a VPN. **Solution:** - Temporarily disconnect from VPN during installation - Reconnect after installation is complete - Configure VPN exceptions for Docker if necessary #### Issue 4: Missing GPU Drivers **Symptoms:** OpenVINO fails to detect GPU or shows CPU-only mode. **Solution:** 1. In the wizard, click **Intel GPU (Required)** 2. Your browser will open to the Intel GPU driver download page 3. Download and install the latest Intel GPU driver 4. Return to the wizard and verify GPU detection #### Issue 5: Ubuntu Version Too Old **Issue:** OpenVINO requires Ubuntu 20.04 or higher for GPU passthrough. **Solution:** - Upgrade your WSL 2 Ubuntu distribution to version 20.04 or later - Verify version and update with the following commands ```bash wsl --status wsl --list --online wsl --install -d Ubuntu-24.04 wsl --set-default Ubuntu-24.04 ``` For example, if the machine does not have the necessary GPU drivers installed, OpenVINO may not function correctly. ## Additional Configuration Notes ### System Requirements - **Operating System**: Windows with WSL 2 (Windows Subsystem for Linux) - **Docker Desktop**: Latest version installed and running - **Administrator access** to your machine ### Registry Access - You must be logged in to Docker Hub - Verify registry access in Docker Hub before proceeding - WSL 2 must be installed (required for Docker on Windows) **WSL 2 Installation:** If you weren't prompted to install WSL 2 during Docker Desktop installation, install it manually before continuing. ### OpenVINO Connection Endpoints When configuring OpenVINO, you may need to reference these endpoints: - `http://host.docker.internal:8000/v3` - `http://ovms:8000/v3` --- ## On-premise deployment guide ReleaseBadge, DockerComposeRelease, KubernetesRelease, } from "@site/src/components/ReleaseInfo"; # On-premise deployment guide Deploy Artemis on your own infrastructure, either as a single Docker/Podman host or on a Kubernetes cluster. This page covers prerequisites and links to the latest release artifacts for both methods. For step-by-step installation, configuration, and update instructions, head to the dedicated guide for your chosen setup. :::tip Download URLs and image lists below are pulled live from the [release manifest](https://turintech.github.io/artemis-deployment/release.json). They always reflect the latest published version. ::: ## 1. Choose a deployment method | Method | Best for | | ----------------------------------------------- | ---------------------------------------------- | | **[Single Machine / VM](./single-machine.mdx)** | Evaluation, single-host production, simple ops | | **[Kubernetes cluster](./kubernetes.mdx)** | Multi-node production, HA, autoscaling | ## 2. Prerequisites ### Network access The host must be able to reach: - Your **LLM provider** API (OpenAI, Anthropic, Azure Foundry, Bedrock, Vertex, Cohere, Deepseek). - The Artemis **file server** at `https://files.artemis.turintech.ai` to fetch the deployment package and CLI. _(Optional if artifacts are transferred manually.)_ ### Hardware | Profile | CPU | Memory | Storage | | --------------- | -------- | ------ | -------------- | | Minimum | 16 cores | 32 GB | 300 GB SSD/HDD | | Recommended | 32 cores | 64 GB | 300 GB SSD/HDD | | Self-hosted LLM | 64 cores | 128 GB | 1 TB SSD/HDD | Self-hosted LLMs additionally require an Nvidia CUDA GPU, Intel Data Center GPU Max 1550, or Gaudi 2. See [LLM VRAM specs](https://llm.extractum.io/list/) for sizing. If your environment cannot meet these requirements, contact support@turintech.ai for alternatives. ### Operating system - **Single Machine / VM:** a Linux-based distribution, including Red Hat Enterprise Linux 9.0 or later, or macOS/Windows with a container runtime such as Docker or Podman. - **Kubernetes:** any conformant cluster (cloud or on-prem), including OpenShift 4.12 or later. ### GPU drivers (optional) Install on each GPU node: - [NVIDIA CUDA Drivers](https://www.nvidia.com/download/index.aspx) - [NVIDIA Container Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html) ### Air-gapped registries Air-gapped deployments need a private container registry. Sonatype Nexus, JFrog Artifactory, or self-hosted Docker Registry all work. Credentials for pulling Artemis images are provided by TurinTech. ## 3. Latest artifacts All deployment artifacts for the current release are listed below. Pick the bundle that matches your chosen method. ### Single Machine / VM Credentials for the file server and image registry are provided separately by TurinTech. For installation steps, see [Single Machine / VM](./single-machine.mdx). ### Kubernetes Pick the binary matching your control machine. Save it as `cli` (or `cli.exe` on Windows) and `chmod +x` on Linux/macOS. For installation steps, see [Kubernetes cluster](./kubernetes.mdx). ## 4. Browser support Artemis is tested against the latest versions of **Chrome**, **Firefox**, and **Edge**. Chrome is recommended for the best experience. Older browser versions may misbehave, so keep your browser up to date. --- ## Kubernetes cluster ReleaseBadge, KubernetesRelease, } from "@site/src/components/ReleaseInfo"; # Kubernetes cluster Artemis combines public Helm charts (mostly Bitnami) with proprietary charts. A cross-platform CLI (Node.js, bundling `kubectl`, `helm`, and `skopeo`) handles configuration and deployment. Review the [prerequisites](./index.mdx#2-prerequisites) before starting. ## 1. Supported clusters - **Cloud:** AWS, Azure, GCP, Intel Developer Cloud, OpenShift (4.12 or later). - **On-prem:** Kubeadm, K3s/K3d, MicroK8s, OKD, or any conformant cluster. ## 2. Latest artifacts Pick the binary matching your control machine. Save it as `cli` (or `cli.exe` on Windows) and `chmod +x` on Linux/macOS. ## 3. Transfer images to an internal registry Air-gapped and locked-down clusters pull every container image from your own registry instead of from TurinTech's. The `transfer.sh` helper reads the same **Container images** list shown under [latest artifacts](#2-latest-artifacts), then copies all required images into the target registry under a `turintech/` namespace, so you don't have to enumerate or tag images by hand. Pass `--type kubernetes` to select the Kubernetes image set. Run it from a host that can reach **both** the source images and your internal registry (for fully air-gapped sites, this is typically a connected "jump" host or a DMZ mirror): ```bash curl -fsSL https://turintech.github.io/artemis-deployment/transfer.sh | bash -s -- --target myregistry.internal:5000 --type kubernetes ``` The script verifies access to both registries (prompting you to log in with your TurinTech credentials if needed), prints the full source → target transfer plan for confirmation, then copies each image. ### Options | Flag | Description | | ------------------- | ----------------------------------------------------------------------------- | | `-t, --target` | Target registry, e.g. `myregistry.internal:5000` (**required**) | | `-T, --type` | Image set to transfer: `docker` or `kubernetes` (**required**) | | `-m, --method` | Transfer method: `crane` (default) or `docker` | | `-y, --yes` | Skip all confirmation prompts; fails if not already logged in | | `-h, --help` | Show usage | ### Transfer methods - **`crane`** (default): copies images registry-to-registry without storing them locally, so no large local disk or running Docker daemon is required. `crane` is downloaded automatically if it isn't already on `PATH`. - **`docker`**: uses `docker pull` / `tag` / `push`. Requires a running Docker daemon but no extra tooling. ### Non-interactive (CI / scripted) Log in to both registries first, then pass `--yes` to skip the prompts: ```bash curl -fsSL https://turintech.github.io/artemis-deployment/transfer.sh | bash -s -- --target myregistry.internal:5000 --type kubernetes --method docker --yes ``` ### After the transfer Point the deployment at your registry with the following overrides in `.configrc.json` (see [Installation](#4-installation) step 6), then deploy with `--env offline`: ```json { "OVERRIDE": { "REGISTRY": "myregistry.internal:5000", "SERVICES_REGISTRY": "myregistry.internal:5000/turintech" } } ``` ## 4. Installation On-prem clusters pull every image from your own internal registry. The `--env offline` flag selects this environment, which resolves images against the registry configured in `.configrc.json`. Run the steps below from a machine with `kubectl` access to the target cluster. 1. Provision a cluster matching the [hardware requirements](./index.mdx#hardware). 2. Download the latest CLI from [latest artifacts](#2-latest-artifacts) and run the remaining steps from its folder. 3. **Air-gapped environments:** transfer every image listed above into your internal registry. See [Transfer images to an internal registry](#3-transfer-images-to-an-internal-registry). 4. Verify cluster connectivity: ```bash ./cli config cluster ``` 5. Authenticate with the image registry: ```bash ./cli config registry-auth --env offline -u -p ``` 6. **Air-gapped environments:** edit `.configrc.json` to point at your internal registry (these values match those printed by the [transfer script](#3-transfer-images-to-an-internal-registry)): ```json { "OVERRIDE": { "REGISTRY": "your.internal.registry:port", "SERVICES_REGISTRY": "your.internal.registry:port/turintech" } } ``` On an **OpenShift cluster**, also enable OpenShift mode (overrides can be combined in a single file): ```json { "OVERRIDE": { "OPENSHIFT": "true" } } ``` 7. Deploy: ```bash ./cli deploy up --env offline ``` 8. Open Artemis at `http://:80` (or your load-balancer URL). :::note LLM provider credentials are not set here; they are configured from the Artemis UI after logging in. ::: ## 5. Expose Artemis (optional) If your cluster has an ingress controller available, expose Artemis through it instead of using the node IP. 1. Apply an Ingress resource pointing at the `artemis-proxy` service. Replace `` with your Artemis namespace and `artemis.domain.foo` with the hostname you want to use. Add TLS, annotations, or `ingressClassName` as required by your controller. ```bash kubectl apply -n -f - <<'EOF' apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: artemis-proxy-ingress spec: rules: - host: artemis.domain.foo http: paths: - path: / pathType: Prefix backend: service: name: artemis-proxy port: number: 80 EOF ``` 2. Switch the proxy service to `ClusterIP` so traffic flows through the Ingress only. Add the override to `.configrc.json`: ```json { "OVERRIDE": { "PROXY_SERVICE_TYPE": "ClusterIP" } } ``` 3. Re-deploy the proxy to pick up the new service type: ```bash ./cli deploy up -f proxy ``` ## 6. CLI reference The deployment CLI groups commands under a few top-level verbs and shares a small set of flags. The most common ones are listed here. Run `./cli --help` or `./cli --help` for the full reference. ### Commands | Command | Purpose | | ------------------------------ | ------------------------------------------------------------------------ | | `./cli config cluster` | Verify the CLI can reach the target Kubernetes cluster. | | `./cli config registry-auth` | Save image-registry credentials for the chosen environment. | | `./cli bundle images` | List the container images this release will install. | | `./cli deploy up` | Install or upgrade Artemis components on the cluster. | ### Flags | Flag | Applies to | Description | | --------------------------------- | --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | | `--env offline` | `config registry-auth`, `deploy up` | Selects the `offline` environment profile, which resolves images against your internal registry per `.configrc.json`. | | `-u`, `-p` | `config registry-auth` | Registry username and password (or token). | | `-g ` | `deploy up` | Limit the deploy to a component group. Repeatable. Common groups: `worker`, `component`. Omit to reconcile the entire stack. | | `-f ` | `deploy up` | Limit the deploy to a single component (e.g. `proxy`). Useful after a targeted override like `PROXY_SERVICE_TYPE`. | ## 7. Update 1. Download the latest CLI from [latest artifacts](#2-latest-artifacts). Copy the `.configrc.json` from your previous deployment into the same folder as the new CLI so your registry and override settings persist across the upgrade. 2. **Air-gapped environments:** mirror the new release's images to your internal registry. Re-run the [transfer script](#3-transfer-images-to-an-internal-registry) to copy them across. 3. Delete the existing `assets` folder, which sits next to the `cli` binary. It is safe to remove; the CLI regenerates it on the next deploy. Do **not** delete `.configrc.json` in the same folder, as it holds your personalised deployment configuration (registry and overrides) and is not regenerated. 4. Apply the update: `./cli deploy up -g worker -g component` :::note `./cli deploy up -g worker -g component` upgrades only the Artemis workers and application components, leaving shared infrastructure (databases, MinIO, Redis, etc.) untouched. This is the recommended path for routine version upgrades. `./cli deploy up` (no flags) reconciles the entire stack, including bundled infrastructure. Use it for a fresh install or when a release explicitly requires infrastructure changes. ::: --- ## Single Machine / VM ReleaseBadge, DockerComposeRelease, DockerComposeDownloadCommand, ReleaseVersion, } from "@site/src/components/ReleaseInfo"; # Single Machine / VM Artemis ships as a set of Docker Compose files managed by the `./artemis` CLI (works with both `docker compose` and `podman compose`). Review the [prerequisites](./index.mdx#2-prerequisites) before starting. ## 1. Supported operating systems - Any Linux-based distribution, including Red Hat Enterprise Linux 9.0 or later. - macOS or Windows with a container runtime such as Docker or Podman. ## 2. Runtime Install one of: - [Docker](https://docs.docker.com/engine/install/) - [Podman](https://podman.io/docs/installation) ## 3. Latest artifacts Credentials for the file server and image registry are provided separately by TurinTech. ## 4. Transfer images to an internal registry Air-gapped and locked-down deployments pull every container image from your own registry instead of from TurinTech's. The `transfer.sh` helper reads the same **Container images** list shown under [latest artifacts](#3-latest-artifacts), then copies all required images into the target registry under a `turintech/` namespace, so you don't have to enumerate or tag images by hand. Run it from a host that can reach **both** the source images and your internal registry (for fully air-gapped sites, this is typically a connected "jump" host or a DMZ mirror): ```bash curl -fsSL https://turintech.github.io/artemis-deployment/transfer.sh | bash -s -- --target myregistry.internal:5000 --type docker ``` The script verifies access to both registries (prompting you to log in with your TurinTech credentials if needed), prints the full source → target transfer plan for confirmation, then copies each image. ### Options | Flag | Description | | ------------------- | ----------------------------------------------------------------------------- | | `-t, --target` | Target registry, e.g. `myregistry.internal:5000` (**required**) | | `-T, --type` | Image set to transfer: `docker` or `kubernetes` (**required**) | | `-m, --method` | Transfer method: `crane` (default) or `docker` | | `-y, --yes` | Skip all confirmation prompts; fails if not already logged in | | `-h, --help` | Show usage | ### Transfer methods - **`crane`** (default): copies images registry-to-registry without storing them locally, so no large local disk or running Docker daemon is required. `crane` is downloaded automatically if it isn't already on `PATH`. - **`docker`**: uses `docker pull` / `tag` / `push`. Requires a running Docker daemon but no extra tooling. ### Non-interactive (CI / scripted) Log in to both registries first, then pass `--yes` to skip the prompts: ```bash curl -fsSL https://turintech.github.io/artemis-deployment/transfer.sh | bash -s -- --target myregistry.internal:5000 --type docker --method docker --yes ``` ### After the transfer Point the deployment at your registry by setting the following in `.env.custom`, then run `./artemis deploy`: ```env REGISTRY=myregistry.internal:5000 SERVICES_REGISTRY=myregistry.internal:5000/turintech ``` ## 5. Installation ### Automated (recommended) Run the installer with the credentials provided by TurinTech. It logs in to the container registry, downloads the deployment package, deploys all services, and creates the default admin user in one step: ```bash curl -fsSL https://turintech.github.io/artemis-deployment/install.sh | bash -s -- --username --password --registry-username --registry-password ``` TurinTech provides all four credentials. `--registry-username` and `--registry-password` are optional if Docker is already authenticated with the registry (for example, after a previous `docker login`). The installer creates an `artemis-/` folder in the current directory. When it finishes, Artemis is running and the admin credentials are printed to the terminal. LLM provider credentials are configured from the Artemis UI after logging in, so no additional deployment configuration is needed for them. :::tip Pass `--skip-deploy` if you want to review or edit `.env.custom` before the first deployment: ```bash curl -fsSL https://turintech.github.io/artemis-deployment/install.sh | bash -s -- --username --password --registry-username --registry-password --skip-deploy ``` Then edit `artemis-/.env.custom` and run `./artemis deploy && ./artemis create-users` manually. ::: ### Manual The flow is the same for online and air-gapped deployments. Steps marked **Air-gapped only** apply when the host has no internet access; skip them otherwise. 1. Provision a VM matching the [hardware requirements](./index.mdx#hardware). 2. **Air-gapped only:** transfer every image listed under [container images](#3-latest-artifacts) into your internal registry. See [Transfer images to an internal registry](#4-transfer-images-to-an-internal-registry). 3. Authenticate with the image registry: - Online: `docker login --username --password ` - Air-gapped: `docker login your.internal.registry:5000` 4. Download the deployment package and extract it (uses the credentials provided by TurinTech): Then move into the extracted folder: {"cd artemis-"}. 5. **Air-gapped only:** edit `.env.custom` to point at your internal registry (this matches the values printed by the [transfer script](#4-transfer-images-to-an-internal-registry)): ```env REGISTRY=your.internal.registry:port SERVICES_REGISTRY=your.internal.registry:port/turintech ``` 6. Deploy Artemis: ```bash ./artemis deploy ``` 7. Create the admin user: ```bash ./artemis create-users ``` 8. Open Artemis at `http://:80`. :::note Run `./artemis info` from the deployment folder to view the admin credentials you need to log in. ::: ## 6. CLI reference All operations are done with the `./artemis` script from inside the deployment folder. | Command | Description | | ---------------------------------------------- | ------------------------------------------------- | | `./artemis` | List all available commands | | `./artemis info` | Show VM details and admin credentials | | `./artemis images` | List the images used by the deployment | | `./artemis deploy` | Deploy or update all services | | `./artemis deploy ` | Deploy a single service | | `./artemis status` | Show health status of all containers | | `./artemis logs` | Follow logs for all services | | `./artemis logs ` | Follow logs for a specific service | | `./artemis restart` | Restart all containers | | `./artemis down` | Stop all containers | | `./artemis destroy` | Remove containers and volumes | | `./artemis update` | Check for a new version and update | ## 7. Configuration All customisation goes into `.env.custom` in the deployment folder. This file is never overwritten by updates or re-installs, so your changes persist across versions. :::warning Do not edit the base `.env` file; it is reset on every update. Always use `.env.custom`. ::: :::note LLM provider credentials are not set here; they are configured from the Artemis UI after logging in. ::: ## 8. Update ### Automated Run from inside the current deployment folder. The script checks for a newer version, prompts for confirmation, downloads it, and re-deploys your `.env.custom` and `keys/` are carried over automatically: ```bash ./artemis update ``` ### Manual 1. Download the new deployment package and extract it: 2. **Air-gapped:** ensure the new [container images](#3-latest-artifacts) are in your internal registry. Re-run the [transfer script](#4-transfer-images-to-an-internal-registry) to copy the new release's images across. 3. Move into the new folder and deploy: {"cd artemis-"}{" && ./artemis deploy"} 4. Open Artemis at `http://:80`. :::note Run `./artemis info` from the deployment folder to view the admin credentials. ::: :::note Check the release notes for any new environment variables, and add them to `.env.custom` if needed. ::: --- ## Pre-deployment questionnaire 1. What is your preferred mode of accessing the platform, out of the following: a. On-premise, on a Kubernetes cluster b. On-premise, Docker-based deployment c. On-premise, OpenShift-based deployment d. Deployed on your cloud e. Deployed on the TurinTech cloud, with unique URL f. Pre-deployed on a laptop *(Mandatory)* 2. How many users will be using the platform? *(Mandatory)* 3. What is the level of permissions that can be provided to your infrastructure? a. Kubernetes cluster access only b. IAM User c. SSH, if bare-metal deployment *(Mandatory)* 4. Will Artemis be deployed in a custom domain? If yes, where is the domain located (e.g. Route 53)? *(Mandatory)* 1. Does it need to be restricted to specific IPs or an internal network? *(Mandatory)* 1. What is the estimated monthly cost on the cloud of choice for the default proposed deployment? (Mandatory)* 2. Will you be restarting the Kubernetes cluster or the machines used to deploy the platform? If yes, how often will this happen? *(Mandatory)* 3. Do you need the ability to execute code? If yes, a. Would any internal libraries need to be used? b. Approximately how many users would run code at the same time? *(Mandatory)* 1. What Git / Version Control environment are you using? *(Mandatory)* 2. Is self-hosting of any LLMs required? *(Mandatory)* 3. If any non self-hosted LLMs are being used, a. Is an API key for each going to be provided? b. If a custom LLM service is going to be provided, what is the input and output format and way to access it? See a list of LLMs provided by Artemis here: [LLMs provided by Artemis](../architecture/llm-usage.md) *(Mandatory)* 4. What programming languages are you planning to use? a. Which version of each? *(Optional)* --- ## SaaS onboarding questionnaire 1. How many users will be using Artemis? 2. What code languages do you wish to evaluate/optimise using Artemis? 3. What is your primary purpose of using Artemis: a. **Code audit**: Evaluate codebases to get a high-level overview of code health; b. **Code optimisation suggestions**: Audit a codebase and receive potential improvement suggestions; c. **End-to-end optimisation**: Run a code optimisation end-to-end, where you identify potential inefficiencies in the codebase, generate improved code snippets, and compile and test the code to ensure validity. 4. If you chose option c. for question 3. above: a. Are you able to provide a codebase that already compiles? *Please note that if your code does not already compile, Artemis may not be able to provide suggestions that can be validated.* b. Are you able to provide unit tests and benchmarking tests? *Please note that if you do not have unit tests or benchmarking tests, Artemis may not be able to generate credible optimisation metrics, i.e. runtime, CPU, memory improvement metrics.* c. Does your code depend on any internal libraries? *If your code depends on internal libraries, we may have to custom setup access to your build environment to compile and validate code, which may require additional time and effort.* :::tip Get in touch Send in your responses to support@turintech.ai to discuss how you can proceed with using the platform. We aim to respond within 2 business days. ::: --- ## Pre-deployment questionnaire(Deployment) 1. What is your preferred mode of accessing the platform, out of the following: a. On-premise, on a Kubernetes cluster b. On-premise, Docker-based deployment c. On-premise, OpenShift-based deployment d. Deployed on your cloud e. Deployed on the TurinTech cloud, with unique URL f. Pre-deployed on a laptop *(Mandatory)* 2. How many users will be using the platform? *(Mandatory)* 3. What is the level of permissions that can be provided to your infrastructure? a. Kubernetes cluster access only b. IAM User c. SSH, if bare-metal deployment *(Mandatory)* 4. Will Artemis be deployed in a custom domain? If yes, where is the domain located (e.g. Route 53)? *(Mandatory)* 5. Does it need to be restricted to specific IPs or an internal network? *(Mandatory)* 6. What is the estimated monthly cost on the cloud of choice for the default proposed deployment? *(Mandatory)* 7. Will you be restarting the Kubernetes cluster or the machines used to deploy the platform? If yes, how often will this happen? *(Mandatory)* 8. Do you need the ability to execute code? If yes, a. Would any internal libraries need to be used? b. Approximately how many users would run code at the same time? *(Mandatory)* 9. What Git / Version Control environment are you using? *(Mandatory)* 10. Is self-hosting of any LLMs required? *(Mandatory)* 11. If any non self-hosted LLMs are being used, a. Is an API key for each going to be provided? b. If a custom LLM service is going to be provided, what is the input and output format and way to access it? See a list of LLMs provided by Artemis here: [LLMs provided by Artemis](../architecture/llm-usage.md) *(Mandatory)* 12. What programming languages are you planning to use? a. Which version of each? *(Optional)* --- ## Artemis Runner The Artemis Runner is now distributed as a single **self-contained binary**, per operating system and architecture — no Python or tools bundle required. The easiest way to get the exact download command is from the **New Artemis runner** panel in the Artemis web console (**Platform Settings → Runners → New Artemis runner**). Pick your **OS** and **architecture** and it fills in the current version, download command, and a single-use registration token for you. ![Add new Artemis runner — download command generator](./img/artemis-runner-panel.png) For the full walkthrough (download → configure → start), see the [Artemis Runner](../features/artemis-runner.md) guide. This page is a reference for downloading specific versions directly. ## Latest release (5.2.0) Linux and Windows ship as **self-contained binaries**; macOS is distributed as a **Python wheels** archive (requires **Python 3.11** and pip). All downloads are **public** — no credentials required. | OS | Download | |---|---| | **Linux** (x64) | [artemis-runner-5.2.0-linux](https://files.artemis.turintech.ai/public/artemis-runner/artemis-runner-5.2.0-linux) — standalone binary | | **Windows** (x64) | [artemis-runner-5.2.0-windows.exe](https://files.artemis.turintech.ai/public/artemis-runner/artemis-runner-5.2.0-windows.exe) — standalone binary | | **macOS** | [artemis-runner-5.2.0-wheels.tar.gz](https://files.artemis.turintech.ai/public/artemis-runner/artemis-runner-5.2.0-wheels.tar.gz) — Python wheels | On Linux/Windows, download the binary and run it directly. On **macOS**, extract the wheels archive and install it into a virtual environment: ```bash tar -xzf artemis-runner-5.2.0-wheels.tar.gz cd artemis-runner-*-wheels python3.11 -m venv .venv && source .venv/bin/activate pip install --find-links wheels/ artemis-runner ``` Then `artemis-runner configure …` and `artemis-runner start` work the same on every platform. Keep the runner up to date with `artemis-runner upgrade`. ## Legacy Releases ### 5.1.1 - Linux (x64): [artemis-runner-5.1.1-linux](https://files.artemis.turintech.ai/public/artemis-runner/artemis-runner-5.1.1-linux) - Windows (x64): [artemis-runner-5.1.1-windows.exe](https://files.artemis.turintech.ai/public/artemis-runner/artemis-runner-5.1.1-windows.exe) - Wheels (other platforms): [artemis-runner-5.1.1-wheels.tar.gz](https://files.artemis.turintech.ai/public/artemis-runner/artemis-runner-5.1.1-wheels.tar.gz) ### 5.1.0 - Linux (x64): [artemis-runner-5.1.0-linux](https://files.artemis.turintech.ai/public/artemis-runner/artemis-runner-5.1.0-linux) - Windows (x64): [artemis-runner-5.1.0-windows.exe](https://files.artemis.turintech.ai/public/artemis-runner/artemis-runner-5.1.0-windows.exe) - Wheels (other platforms): [artemis-runner-5.1.0-wheels.tar.gz](https://files.artemis.turintech.ai/public/artemis-runner/artemis-runner-5.1.0-wheels.tar.gz) ### 5.0.0 - Linux (x64): [artemis-runner-5.0.0-linux](https://files.artemis.turintech.ai/public/artemis-runner/artemis-runner-5.0.0-linux) - Windows (x64): [artemis-runner-5.0.0-windows.exe](https://files.artemis.turintech.ai/public/artemis-runner/artemis-runner-5.0.0-windows.exe) - Wheels (other platforms): [artemis-runner-5.0.0-wheels.tar.gz](https://files.artemis.turintech.ai/public/artemis-runner/artemis-runner-5.0.0-wheels.tar.gz) --- ## Artemis Skills Skills are Claude Code plugins that guide you through setting up and configuring Artemis — directly from your terminal. They are powered by the [turintech/skills](https://github.com/turintech/skills) marketplace. --- ## Installation Add the TurinTech AI skills marketplace and install the Artemis plugin in Claude Code. ![Artemis Skills](../project-setup/img/artemis-skills.png) ### Prerequisites Ensure you have Claude Code installed and running: - Claude Code CLI - Active internet connection ### 1. Add the marketplace Register the TurinTech AI skills marketplace in Claude Code: ``` /plugin marketplace add turintech/skills ``` ### 2. Install the Artemis plugin Install the Artemis plugin, which includes all available skills: ``` /plugin install artemis@skills ``` ### 3. Verify installation Check that the skills are available by listing installed plugins: ``` /plugin list ``` --- ## Available Skills Once installed, these skills are available as slash commands in Claude Code: | Skill | Description | |---|---| | `/repo-setup` | Set up a repository for Artemis execution — configure build, test, and benchmark commands with `artemis_results`. | | `/runner-setup` | Install and configure the Artemis runner on a machine. | | `artemis` | Classify a request, check workflow readiness, and route to the right skill. | | `cli-setup` | Install, update, and authenticate the Artemis CLI. | | `runner-setup` | Install, register, start, update, and verify a runner. | | `repo-prepare-fork` | Fork or privately mirror an upstream repository the user does not control, pinned to a known commit. | | `repo-command-setup` | Derive and verify compile, test, and benchmark commands, including numeric `artemis_results` metrics. | | `project-import` | Import a remote Git branch as a fresh Artemis project and capture its UUID. | | `discovery-start` | Create a Discovery run with inline commands, wait for the baseline, and confirm exploration started. | | `discovery-inspect` | Interpret a Discovery run: status, versions, metrics, and what the winning diff actually changed. | | `discovery-steer` | Continue, expand the budget, or redirect a live Discovery run. | | `maintain` | Run Maintain end to end: rules, scan, triage, fix, ship, and resync. | --- ## Updating Keep your skills up to date with the latest changes: ``` /plugin marketplace update skills ``` --- ## Using `/repo-setup` Run `/repo-setup` inside Claude Code to automatically configure your project's build, test, and benchmark commands. The skill analyses your repository, detects your build system and hardware, and writes the correct commands to your Artemis project settings. Push the resulting changes to Git — Artemis syncs automatically. :::tip You can also trigger this from the Execution settings page in Artemis using the **Agent Skill → View setup guide** option. See [Project Settings](../project-setup/settings/runner-and-scripts.md). ::: --- ## Artemis CLI Command-line interface for the Artemis AI code platform. The Artemis CLI drives the full Artemis platform from your terminal: import repositories, run AI-driven evolutionary discovery, build with AI agents, scan and fix code-health issues, and ship the results as pull requests. It is built for both humans and LLM agents — every command runs non-interactively and can emit structured JSON — which makes it ideal for scripting, CI/CD pipelines, and agent-driven workflows (e.g. Claude Code) as well as day-to-day terminal use. --- ## Install the Artemis CLI ### Prerequisites - macOS, Linux, or Windows - A bash shell on macOS/Linux, or PowerShell 5.0+ on Windows - Internet connection for download and API access - An Artemis API key — generate one from the Artemis web UI ### 1. Download and run the installer The installer downloads the right `artemis` binary for your OS and architecture, verifies its checksum, installs it to `~/.local/bin`, and points the CLI at your Artemis deployment. Two independent choices are available: - **Which build to install** — `--version ` (a specific release), `--nightly` (newest release including prereleases), or `--dev` (the rolling development build). The default is the newest stable release. The three are mutually exclusive. - **Which deployment to talk to** — `--env prod` (the hosted Artemis platform, and the default), or `--base-url ` for an on-prem/custom deployment. ```bash curl -L --digest -u "Artemis_User:Artemis_Custom_Runner_2025" \ "https://files.artemis.turintech.ai/artemis-cli/latest/artemis-cli-installer.sh" \ -o installer.sh && chmod +x installer.sh && ./installer.sh --env prod ``` **On-premise / custom deployment** ```bash curl -L --digest -u "Artemis_User:Artemis_Custom_Runner_2025" \ "https://files.artemis.turintech.ai/artemis-cli/latest/artemis-cli-installer.sh" \ -o installer.sh && chmod +x installer.sh \ && ./installer.sh --base-url https://your-custom.artemis.turintech.ai ``` **Install a specific version, or a pre-release build** ```bash ./installer.sh --version 2.3.0 --env prod # a specific stable release ./installer.sh --nightly --env prod # newest build incl. prereleases ./installer.sh --dev --env prod # rolling development build ``` Other installer flags: `--install-dir ` (default `~/.local/bin`) and `--help`. :::note If `~/.local/bin` is not on your `PATH`, the installer prints the line to add to your shell profile. Reload your shell (or `source ~/.bashrc`) and `artemis` will be available everywhere. ::: ### Alternative: download the binary directly For CI images, containers, or air-gapped setups, download the binary yourself: ```bash curl -L --digest -u "Artemis_User:Artemis_Custom_Runner_2025" \ "https://files.artemis.turintech.ai/artemis-cli/latest/artemis-cli-linux-amd64" \ -o artemis && chmod +x artemis ``` Swap `artemis-cli-linux-amd64` for `artemis-cli-linux-arm64`, `artemis-cli-darwin-amd64`, `artemis-cli-darwin-arm64`, or `artemis-cli-windows-amd64.exe` as needed, and swap `latest` for `nightly`, `dev`, or a version like `2.3.0`. Each channel directory also carries a `checksums.txt`. When you download the binary directly the installer hasn't configured anything — set the deployment yourself in the next step. ### 2. Connect and authenticate `artemis login` points the CLI at a deployment and stores your API key. It writes exactly two values — `ARTEMIS_BASE_URL` and `ARTEMIS_API_KEY` — and every service endpoint is derived from that single base URL. The command verifies the URL is reachable and validates the key against it before storing either. ```bash # Interactive — prompts for the deployment URL and API key artemis login # Non-interactive — pass prod (hosted Artemis) or a full URL artemis login --url prod --api-key artemis login --url https://your-custom.artemis.turintech.ai --api-key ``` The installer already set the base URL, so after running it you can simply supply the key: ```bash artemis login --api-key ``` API keys are per-deployment: changing the URL clears any previously stored key. `artemis logout` removes the stored API key but keeps the base URL. ### 3. Verify ```bash artemis status ``` `status` reports your configuration, whether you're authenticated, and health-checks each derived service endpoint. It exits non-zero if the configuration is invalid or no API key is set, so scripts can gate on it. --- ## Environments If you work against more than one deployment — a dev box, staging, and production — `artemis env` gives you kubectl-style contexts instead of re-running `login` each time. Each environment is its own config file under the user config directory (`envs/.env`) holding that deployment's URL and API key, and the selected one is what `login`, `config set`, and every other command read and write. ```bash # Create environments and switch between them artemis env add staging --url stg --api-key artemis env add production --url prod --use artemis env use staging # Where am I? artemis env current artemis env list # One-off command against another environment ARTEMIS_ENV=production artemis project list # Back to the pre-environments config artemis env use default artemis env remove staging ``` `env add --url` takes a full base URL or a named deployment; the API key can be supplied here or set later by switching to the environment and running `artemis login`. :::note Environments are entirely opt-in. Until you create one, the CLI keeps using its single default config exactly as before, and the name `default` always refers to that config. ::: --- ## Feature Overview The CLI is organized into command groups, grouped by workflow stage. ### Getting Started | Command | What It Does | |---------|--------------| | `login` / `logout` | Connect the CLI to a deployment and store/remove your API key | | `status` | Show configuration and connectivity status | | `env` | Switch between deployments (named environments) | | `config` | Show, set, or edit configuration values | | `tui` | Launch the interactive terminal dashboard | ### Optimise | Command | What It Does | |---------|--------------| | `project` | Import and manage Git repositories | | `changeset` | Inspect, validate, publish, and ship the staged code changes behind PRs | ### Build with AI | Command | What It Does | |---------|--------------| | `discovery` | AI-driven evolutionary code discovery | | `task` | Create and execute AI coding tasks (single work items) | | `plan` | Break complex features into structured tasks with AI | | `chat` | AI-powered conversations about your codebase | ### Maintain | Command | What It Does | |---------|--------------| | `maintain` | Scan, triage, and fix code-health issues, then ship the fixes | ### Resources | Command | What It Does | |---------|--------------| | `context` | Manage durable context injected into your agents | | `key` | Manage Git authentication keys | | `runner` | View the Artemis Runner fleet | | `model` | View available LLM models and manage registered model entries | | `profile` | Manage the platform's LLM provider connections | | `process` | Inspect background processes started by async commands | | `logs` | Browse the platform's own service logs (admin-only) | | `version` | Print CLI version information | Run `artemis --help` for full details on any group or subcommand. --- ## Conventions Every command follows the same house rules, which make the CLI predictable for both people and agents: - **Structured output.** Add `--output-format json` to any command to get one JSON document on stdout; human-readable progress and errors go to stderr. The default is `text`. - **ID or name.** Wherever a command takes `-p, --project`, you can pass either the project ID or its name. Name resolution is scoped to your user; on an ambiguous name the CLI lists the candidates rather than guessing. - **Positional IDs.** The primary resource ID is a positional argument (`artemis discovery get `), not a flag. - **Pagination.** List commands accept `--page` / `--per-page`, and `--all` to fetch and aggregate every page. - **Long-running ops.** Async commands accept `--wait` (block until a terminal state) and `--timeout` (default 20m). A wait that times out exits with code 6. - **Destructive ops.** Commands that delete or overwrite accept `-f, --force` to skip the confirmation prompt. - **Interactive when interactive.** Commands whose agent can ask a question (`plan create`, `plan respond`, `maintain rules create`, `maintain chat`) prompt at a terminal, and fall back to `--answer` / `-m` flags or a single request/response turn when piped — so the same command works for a person and for an agent driving the CLI. ### Global flags | Flag | Description | |------|-------------| | `--debug` | Enable verbose debug output | | `--config ` | Path to the config file (default: `./.env` if present, else the selected environment's file) | | `--output-format ` | `text` (default) or `json` | | `-h`, `--help` | Show help for the command | ### Exit codes | Code | Meaning | |------|---------| | 0 | Success | | 1 | Generic error | | 3 | Authentication error (HTTP 401/403) | | 4 | Not found (HTTP 404) | | 5 | Server error (HTTP 5xx) | | 6 | Wait timed out (`--wait` / `--timeout` expired) | --- ## Typical Workflow A complete end-to-end run, from an empty account to a pull request: ```bash # 1. SETUP — verify your connection artemis status # 2. ADD A GIT KEY — register your Personal Access Token artemis key add --name "github-work" --provider github --token # 3. IMPORT A PROJECT — clone a repo into Artemis artemis project import \ --git-url https://github.com/your-org/your-repo.git \ --key-id # 4. SET BUILD COMMANDS — what a runner executes to compile, test, benchmark artemis project commands set --project \ --compile "go build ./..." --test "go test ./..." --benchmark "go test -bench=." # 5. CHECK THE COMMANDS WORK — validate the unmodified code on a runner artemis changeset create --project --name "baseline" artemis changeset validate --project \ --version original --runner my-runner --wait # 6. DISCOVER — run the AI optimisation loop against a task artemis discovery create --project \ --task "Reduce p99 latency of the request path" \ --model --target-files src/server.go \ --versions 10 --runner my-runner # 7. INSPECT — review what the agent produced and how it scored artemis discovery get artemis discovery versions list artemis discovery metrics --stats # 8. SHIP — open a pull request from the winning changeset artemis changeset list --project artemis changeset pr --project --title "Performance improvements" ``` --- ## Discovery **Discovery** is Artemis's continuous AI-driven optimisation loop. An agent proposes **experiments** (testable hypotheses about what might improve the code), implements each attempt as a code **version**, executes it on a runner, and scores it against the run's metric schema — bounded by the run's version budget. | Entity | What it is | |--------|-----------| | run | The top-level optimisation loop for a task | | experiment | A testable hypothesis, concluded validated / refuted / inconclusive | | version | A generated code candidate, executed and scored by fitness | | baseline | The unmodified code, executed once to anchor metric comparisons | | metrics | Recorded metric values for the run's executed versions | ### Starting a run Execution runs (the default) measure a baseline and run each generated version, so they need a benchmark command and a [runner](./artemis-runner.md). The project's stored build commands are used as defaults, matching the UI; `--compile-cmd` / `--test-cmd` / `--benchmark-cmd` override them. With `--skip-execution`, versions are graded by review instead and no commands or runner are needed. ```bash # Minimal run — no commands or runner needed artemis discovery create --project \ --task "Speed up JSON parsing" --model --skip-execution # Full configuration artemis discovery create --project \ --task "Reduce p99 latency" \ --model \ --target-files src/handler.go --target-files src/cache.go \ --versions 10 \ --compile-cmd "go build ./..." \ --test-cmd "go test ./..." \ --benchmark-cmd "go test -bench=." \ --runner my-runner --mode automatic ``` `--model` is required — the API does not pick a default. It takes a model-catalogue UUID or a model-type code (see [Models](#models-and-providers)). `--target-files` and `--review-model` are repeatable. ### Following and steering a run ```bash artemis discovery list --project artemis discovery get artemis discovery versions list artemis discovery versions logs artemis discovery experiments list --status validated # Redirect an active agent mid-run artemis discovery steer --message "Focus on algorithmic changes, don't touch build flags" # Extend a finished run's version budget artemis discovery continue --versions 5 # Change a run's commands, runner, or status artemis discovery update --runner other-runner artemis discovery cancel ``` ### Metrics and fitness Each metric is measured once per benchmark repetition, so a metric can have many raw samples per version. `metrics` lists the individual samples by default; `--stats` shows the summary statistics over them — mean, standard deviation, standard error, min, max, sample count, and improvement against the baseline — the same numbers the UI shows. ```bash artemis discovery metrics artemis discovery metrics --stats --all # Replace the run's fitness metric schema and recompute version fitness artemis discovery metrics-schema set --file schema.json # Set or (re)execute the baseline artemis discovery baseline set --metrics-schema schema.json artemis discovery baseline execute ``` A metric schema is a JSON array of metric descriptors: ```json [ {"metricId": "", "source": "worker", "higherIsBetter": false, "importance": 0.7}, {"metricId": "", "source": "agent", "higherIsBetter": true, "importance": 0.3, "description": "Code readability", "extractionHint": "Judge naming and structure"} ] ``` Discovery also exposes `experiments create/update/delete` and `versions create/execute/update` for finer control — see `artemis discovery --help`. --- ## Changesets and validation A **changeset** is the staged set of code changes that discovery runs, tasks, plans, chats, and maintain fixes produce before they become pull requests. Your git remote stays untouched until you publish a branch or open a PR. See [Changesets](./changeset.md) for the UI equivalent. ```bash artemis changeset list --project artemis changeset get --project artemis changeset diff --project --stat artemis changeset diff --project --base --head ``` ### Validation `changeset validate` runs a version's compile, test, and benchmark commands on a [runner](./artemis-runner.md). This is the same primitive discovery uses to evaluate every version it generates, including the baseline — so it's the exact code path real runs take, not an approximation. The commands come from the project's configured build commands, or from a named validation script via `--script`. Creating a changeset gives you exactly one version — the project's current original code — which makes it the standard way to check your build commands actually work before starting a run: ```bash artemis changeset create --project --name "baseline" artemis changeset validate --project \ --version original --runner my-runner --wait # Per-command results and the full process log artemis changeset validation get artemis changeset validation logs ``` ### Shipping ```bash # Publish to a branch, without opening a PR (auto-named unless --branch is given) artemis changeset publish --project \ --branch my-fix --commit-message "fix: nil deref" # Publish and open a pull request — title and description are AI-generated when omitted artemis changeset pr --project --title "feat: add auth" --base develop ``` `changeset pr` works on any changeset regardless of where it came from, so the whole loop can be driven from the terminal. `task pr` and `maintain issues pr` are convenience wrappers that resolve the changeset for you. --- ## AI Coding ### Tasks A **task** is a single work item for an AI agent to implement. Tasks move through `todo` → `in_progress` → `done` / `failed` / `cancelled`. ```bash # Create and auto-start a task, waiting for it to finish artemis task create --project \ --prompt "Add input validation to user registration" \ --auto-start --wait # Or create now, start later artemis task create --project --prompt "Implement rate limiting" artemis task start --model --wait --timeout 30m # List, inspect, and follow a task artemis task list --project --status done artemis task get artemis task logs artemis task stop # Ship the result as a PR artemis task pr --title "feat: add input validation" ``` ### Plans A **plan** breaks a large feature into ordered tasks with AI assistance. The agent asks clarifying questions, analyzes your code, and produces an implementation roadmap. ```bash # Interactive planning (the agent asks questions) artemis plan create --project \ --prompt "implement user authentication with OAuth2" # Skip the Q&A for simple, well-defined work artemis plan create --project \ --prompt "add unit tests for the user service" --skip-interaction artemis plan list --project artemis plan get ``` At a terminal the agent's questions are asked inline. Elsewhere — agents, CI, anything that pipes stdin — the command prints what is being asked and stops, and you answer the **same** plan with `plan respond`: ```bash # See what the plan is waiting on artemis plan respond # Answer the first question with its second choice artemis plan respond --answer 2 # Answer several questions, targeting them by number artemis plan respond --answer "1=comprehensive" --answer "2=3" ``` :::warning Don't re-run `plan create` to supply an answer — that starts a *second* plan, whose agent asks its own question, leaving the first one parked forever. `plan create` also accepts `--answer` up front, which implies `--wait`. ::: ### Chats Chats are AI-powered conversations about your codebase — for understanding, debugging, or architecture questions. Use `chat send` to answer an agent's questions and `chat messages` to follow the conversation; this is the same mechanism that drives interactive rule and plan authoring. ```bash # Async chat (runs in the background) artemis chat create --project --message "Explain the authentication flow" # Real-time streaming artemis chat create --project --message "Where are the vulnerabilities?" --sync # Continue an existing chat artemis chat send --message "Now focus on the login handler" artemis chat messages artemis chat cancel ``` **Chat vs Task vs Plan:** *Chat* answers questions (no code changes); *Task* is a single coding work item; *Plan* breaks a feature into multiple tasks. --- ## Maintain **Maintain** finds, triages, and fixes code-health issues, then ships the fixes. The flow is: author **rules** → **scan** the code against them (which creates issues) → **triage** the issues → **fix** them (with Artemis's agent, or by exporting a prompt for your own) → **publish** a branch or open a **PR** → **sync** the board as the code moves on. ```bash # 1. Get rules in place — import the default catalogue, or author your own artemis maintain rules defaults # browse the platform catalogue artemis maintain rules import-defaults --project artemis maintain rules create --project \ --prompt "Flag any SQL query built with string concatenation" artemis maintain rules update --project --name "No raw SQL" # 2. Scan the code (creates issues on the board; --rule is required, repeatable) artemis maintain scans run --project --rule --count 10 --wait artemis maintain scans run --project --rule \ --path src/ --path lib/ --commit # 3. Triage the findings artemis maintain issues list --project --severity high --status open artemis maintain issues confirm # true positive artemis maintain issues dismiss # false positive (closes it) artemis maintain issues close # close without ruling on validity # 4. Fix — with Artemis's agent, or export a prompt for your own agent artemis maintain issues fix artemis maintain issues prompt --project | my-agent # 5. Ship — publish a branch, or open a PR artemis maintain issues publish --project artemis maintain issues pr --project --title "fix: sanitize query" # 6. Keep the board honest as the code changes artemis maintain syncs run --project --wait ``` Every issue and rule carries a human-friendly display ID (`ISS-143`, `RULE-7`). Those are for readability only — commands take the underlying UUID. `issues fix` accepts several issue IDs at once: all the fixes land in a single changeset, and the agent's work streams into one chat you can follow with `artemis chat messages `. `issues list` filters on `--severity`, `--status`, `--validity`, `--fix-status`, `--complexity`, `--rule`, and `--path-prefix`, and sorts with `--sort` / `--order`. ### Rule authoring Rule authoring is agent-driven. By default `rules create` waits for the authoring agent and approves the rule it proposes, so it returns a rule you can scan with straight away. Pass `--auto-approve=false` to get the `[DRAFT]` back immediately with the agent left waiting — a draft cannot be scanned. A *question* is never auto-answered. At a terminal the CLI asks you; otherwise pass `--answer`, which also wins over the prompt so scripts stay deterministic. Rule editing supports renaming (`--name`) and rewriting the definition from markdown (`--markdown-file`); category, severity, and tags come from the rule definition and aren't editable directly. ### Maintain chat `artemis maintain chat` holds a conversation with the maintain agent over a project's board. The agent reads both the board and the project's source, so you can hunt for a problem by describing it rather than scanning for it — and have the agent raise the issue once you agree what it is. It can also manage rules and start scans and fixes from the same conversation. ```bash # Back-and-forth session at a terminal (empty line to end) artemis maintain chat --project # One turn, for scripting artemis maintain chat --project \ -m "is there anywhere we parse the same response twice?" --output-format json ``` Issues raised this way land on the board like any other, and can be fixed with `artemis maintain issues fix`. --- ## Projects and Git Keys ### Supported Git providers - GitHub (`github`) - GitLab (`gitlab`) - Bitbucket (`bitbucket`) - Azure DevOps (`azure`) ### Managing keys Artemis needs a Personal Access Token to clone private repos, create branches, and open PRs. Keys are encrypted at rest and referenced by ID. ```bash artemis key add --name "github-work" --provider github --token ghp_xxxxxxxxxxxx artemis key add --name "bitbucket" --provider bitbucket --token --email you@example.com artemis key add --name "azure" --provider azure --token --organization myorg artemis key list artemis key delete # does not revoke the underlying token ``` Required token scopes: | Provider | Token Type | Scopes | |----------|------------|--------| | GitHub | PAT / Fine-grained PAT | `repo` | | GitLab | PAT | `api`, `read_repository`, `write_repository` | | Bitbucket | App Password | Repositories read/write | | Azure DevOps | PAT | Code read/write | ### Importing and managing projects ```bash # Import (auto-sync enabled by default) artemis project import \ --git-url https://github.com/your-org/repo.git \ --key-id --name "My API Service" --branch develop # Track a different branch/commit, or pull upstream changes artemis project branch --branch main artemis project pull artemis project compare # Set build/test/benchmark commands and a default runner artemis project commands set --project \ --compile "go build ./..." --test "go test ./..." --benchmark "make bench" artemis project commands get --project artemis project runner set --project --runner my-runner # Search, filter, and clean up artemis project list --search "my-api" --language python artemis project delete ``` Auto-sync mirrors your repository to Artemis's internal Gitea, which is required for task execution and PR creation. It's on by default at import; if you imported with `--auto-sync=false`, enable it later with `artemis project sync `. --- ## Context **Contexts** are durable knowledge about how you work, applied to every agent you run. They're personal — they apply only to agents you run. | Availability | Behaviour | |--------------|-----------| | `always_on` | Injected into every agent's system prompt (counts against the upfront token budget) | | `on_demand` | Agents see the name and description only, and choose when to read the body | | `disabled` | Stored but not offered to agents | ```bash # Store an always-on convention artemis context add --name "code style" --body "We use conventional commits" --always-on # On-demand reference material from a file, with the description agents see artemis context add --name "deploy runbook" --description "How we ship" --body-file runbook.md # From a pipe — e.g. an agent recording what it learned echo "staging DB resets nightly" | artemis context add --name "staging db" --source agent # Inspect and manage artemis context list --availability always_on artemis context get artemis context update --availability always_on artemis context usage # upfront context size against the token budget artemis context delete ``` New contexts are on-demand unless `--always-on` or `--disabled` is given. --- ## Models and providers Commands that generate code or reason about it accept `--model`. Each model has **two identifiers**, and different commands want different ones: - the **model-type code** (e.g. `claude-sonnet-5`) — used by `task create` / `task start` - the **catalogue ID** (a UUID) — used by `chat create` `discovery create`, `maintain scans run`, `maintain issues fix`, and `maintain chat` accept either form. `artemis model list` prints both. ```bash artemis model list # the preset tiers agents can use, with both IDs artemis model groups --task coding # models organized by task type ``` If no model is specified, Artemis uses the configured default for each task type — except `discovery create`, where `--model` is required. ### Provider connections `artemis profile` manages the platform's LLM provider connections: the credentials and endpoints through which agents reach Anthropic, OpenAI, Azure, Bedrock, or a local Ollama instance. Each profile holds one provider's credentials; the models it exposes are managed with `artemis model`. ```bash # What providers can be connected, and what credentials they take artemis profile providers # Connect a provider artemis profile create --name anthropic-prod --provider anthropic --api-key sk-ant-... artemis profile create --name local-ollama --provider ollama --no-auth --base-url http://localhost:11434 artemis profile create --name bedrock --provider bedrock \ --credentials '{"type":"aws_iam","access_key":"...","secret_key":"...","region":"eu-west-2"}' # What the provider offers, then register some of it artemis profile catalog artemis model add --profile --from-catalog claude-sonnet-5 --from-catalog claude-haiku-4-5 # Register a custom deployment manually artemis model add --profile \ --model-id my-tuned-model --base-model claude-sonnet-5 --name "Tuned Sonnet" # Inspect, verify, and clean up artemis model registry --profile artemis model validate artemis profile list ``` `--base-model` takes a model id from the [litellm model catalog](https://models.litellm.ai/model_catalog); it tells the platform which catalog entry a custom-named model should inherit capabilities, token limits, and pricing from. --- ## Background processes and platform logs Async commands hand back a `processId` instead of blocking. A process's overall status can read `success` while an individual step inside it was a no-op or a failure, so use `status` for the summary and progress-detail breakdown, and `logs` for the full step-by-step trace. ```bash artemis process status artemis process logs ``` `artemis logs` browses the logs of the platform's own services — APIs, workers, and infrastructure like postgres or kafka. It requires an admin user; other users get a permission error. It defaults to the last hour, newest first. ```bash artemis logs services # what can be queried artemis logs falcon --level error artemis logs falcon --search "changeset" --since 6h artemis logs falcon --follow # live tail ``` --- ## Interactive TUI For a richer terminal experience, launch the dashboard: ```bash artemis tui ``` The TUI (built on Bubble Tea) provides a two-panel view — projects on the left, details on the right — with `↑`/`↓` or `j`/`k` to navigate, `Tab` to switch panels, `r` to refresh, and `q` to quit. --- ## Configuration The CLI loads configuration from environment variables and a `.env` file. Priority: environment variables > `.env` file > defaults. The file is resolved as `./.env` in the current directory if present (a project-local override), otherwise the selected [environment's](#environments) file under `~/.config/artemis/`. ### Common commands ```bash # Show current configuration artemis config artemis config show # Set a single value artemis config set ARTEMIS_API_KEY # Open the config file in your editor artemis config edit ``` The recommended way to (re)point the CLI at a deployment is `artemis login` — it writes and validates `ARTEMIS_BASE_URL` and `ARTEMIS_API_KEY` for you. ### Environment variables **Required** | Variable | Description | |----------|-------------| | `ARTEMIS_BASE_URL` | Deployment base URL. Every service endpoint is derived from it. Accepts a full URL, or `prod` for hosted Artemis. | | `ARTEMIS_API_KEY` | Your Artemis API key | A single `ARTEMIS_BASE_URL` is all most users need — the services are path prefixes on one host, so the CLI derives the user-management, Artemis backend, and Falcon endpoints from it. For advanced setups you can still override an individual endpoint by setting its explicit variable (`USER_MGMT_URL`, `ARTEMIS_API_URL`, `FALCON_URL`); an explicit override shadows the derived value. **Optional preferences** | Variable | Default | Description | |----------|---------|-------------| | `ARTEMIS_ENV` | — | Named environment to use for this invocation (overrides the selected one) | | `ARTEMIS_DEBUG` | `false` | Enable verbose debug output | | `ARTEMIS_OUTPUT_FORMAT` | `text` | Output format: `text` or `json` | | `ARTEMIS_TIMEOUT` | `120s` | Request timeout (e.g. `30s`, `2m`) | | `ARTEMIS_RETRY_ATTEMPTS` | `3` | Number of retry attempts | | `ARTEMIS_RETRY_DELAY` | `1s` | Delay between retries | | `ARTEMIS_MODEL_TYPE` | — | Default model for code generation and analysis | --- ## Getting Help Every command and subcommand has its own help text with examples: ```bash artemis --help artemis maintain --help artemis discovery create --help ``` For runner setup, see [Artemis Runner](./artemis-runner.md). For genetic-algorithm-based optimization details, see [Artemis Intelligence](./artemis-intelligence.md). --- ## Artemis Intelligence Artemis Intelligence is the optimization engine of the Artemis platform, developed by TurinTech. It executes targets with an internal configuration, collects execution logs, and uses the results to generate improved versions in a continuous optimization cycle. --- ## Core Features * Internal run setup ensures every generated version is evaluated with real execution data, so each new generation learns from the previous one. * Ability to extract actual values of any metrics that appear in logs, define them as score metrics, and analyze them. * Metric-driven optimization: specify your focus in a prompt, and Artemis will optimize towards that metric. This can be a built-in score, a custom metric, or one extracted from logs. ## How Internal Run Works You can enable **internal run** by selecting **Artemis Intelligence** as the method for generating targets and configuring its settings. 1. Go to `Projects` → `Optimisations` → `Targets` and click **+ (Create)**. 2. Choose **Artemis Intelligence**. ![generate with artemis ](./img/generate-with-artemis-1.png) When opening the Artemis Intelligence configuration, you can adjust its settings: ![Artemis Intelligence](./img/artemis-intelligence-c.png) Artemis will then use execution logs to guide the generation of subsequent target versions. ## How the Scoring System Works * When you generate targets using Artemis Intelligence, scores are automatically extracted from logs and displayed for both the original and generated versions. * If you want to optimize or analyze a specific metric, it's better to include it in your prompt. Artemis will then focus on that metric throughout the optimization cycle. --- ## Artemis Runner(Features) A runner enables you to validate your code by running builds, tests, and benchmarks on your own machine. The Artemis Runner is a single self-contained binary that you download, configure, and run to connect your hardware to the Artemis platform — letting you run code outside the platform safely and efficiently. {/* Video hidden pending review — it may demonstrate the older Python-bundle setup flow rather than the current standalone-binary flow. Re-enable once confirmed/re-recorded. :::tip Video: How to set up a runner - **[Artemis Runner](https://youtu.be/AbWhnw8jlZw)** — Learn how the Artemis Runner works and how to set it up ::: */} ## Accessing Runner Setup There are two ways to reach the runner setup screen, where you generate the download command and a single-use registration token. ![Setting up a new runner: from a project's Runner and Scripts, "Set up a new runner" takes you to Platform Settings, Runners, where you click "New Artemis runner"](./img/artemis-custom-runner-flow.png) ### Method 1: Via Platform Settings 1. Click **Platform Settings** in the header bar 2. Go to the **Runners** section under **Integrations** in the left sidebar 3. Click **"New Artemis runner"** to generate a registration token ### Method 2: Via Project Settings 1. Navigate to your project's **Settings** tab in the top navigation 2. Go to the **Runner and Scripts** section in the left sidebar 3. Click **"Set up a new runner"** under the **Runner** dropdown — this takes you to the **Runners** screen above, where you click **"New Artemis runner"** ## Quickstart On Linux and Windows the runner ships as a single self-contained binary; on **macOS** it installs from a Python wheels archive (**Python 3.11** + pip). On the **New Artemis runner** screen, choose your **OS** (Linux, Windows, or macOS) and **architecture**; the panel generates the exact download command and a single-use registration **token**. Use a bash shell on macOS/Linux, or PowerShell 5.0+ on Windows. See the [downloads page](../downloads/custom-runner-downloads.md) for direct links and the macOS install steps. ![Add new Artemis runner setup panel](./img/artemis-custom-runner-add-runner.png) 1. **Create a folder and download the runner binary** **Windows (PowerShell):** ```powershell New-Item -ItemType Directory artemis-runner; Set-Location artemis-runner iwr -Uri "https://files.artemis.turintech.ai/public/artemis-runner/artemis-runner-5.2.0-windows.exe" -OutFile "artemis-runner.exe" ``` **Linux (bash):** ```bash mkdir artemis-runner && cd artemis-runner curl -L "https://files.artemis.turintech.ai/public/artemis-runner/artemis-runner-5.2.0-linux" -o artemis-runner && chmod +x artemis-runner ``` > Copy the exact command for your platform from the setup panel — it fills in the current version, OS, and architecture for you. 2. **Configure the runner** Pass the deployment URL and the single-use token from the setup panel. Optionally add `--runner-name` to skip the interactive name prompt. ```powershell .\artemis-runner.exe configure --url https://artemis.turintech.ai --token --runner-name "my-runner" ``` On Linux/macOS, invoke it as `./artemis-runner configure ...`. 3. **Start the runner** ```powershell .\artemis-runner.exe start ``` Once it connects, your runner appears in the **Active Runners** list and becomes selectable in the project's **Runner and Scripts** dropdown. :::note The registration token is **single-use** and time-limited. If it expires or is already spent, click **Regenerate** on the setup panel (or create a new runner) to get a fresh one. ::: ### Registering with an API key The token flow above is what the Web UI setup panel generates. A runner can equally register itself on first `start` using your Artemis API key, which avoids the Web UI round-trip entirely and is usually the better fit for scripted or agent-driven setup: ```bash set -a; . ~/.config/artemis/.env; set +a # exports ARTEMIS_API_KEY ./artemis-runner start \ --runner-name "my-runner" \ --url https://artemis.turintech.ai \ --no-delete-task-output ``` ## Upgrading the runner To update an existing runner to the latest release, run: ```bash artemis-runner upgrade ``` ## How the Runner Works ![Runner architecture](./img/artemis-custom-runner--summary.svg) The runner operates through a secure REST API communication: 1. **Command triggered** — User runs a validation command on the Artemis web platform 2. **Runner receives command** — Your local runner picks up the command from the channel 3. **Repository copied locally** — Runner clones your repository to a temporary folder (see [Task output: where your code is downloaded and run](#task-output-where-your-code-is-downloaded-and-run) to learn where, and how to change it) 4. **Command executed** — Runner executes the command on the local copy 5. **Logs sent back** — Real-time logs stream back to the Artemis server ## Configuration Options Running `configure` saves your settings to a `settings.env` file next to the binary. When you `start` the runner, values are resolved in this order: **CLI flags > environment variables > `settings.env` > defaults**, so you can override any saved setting on the command line without re-running `configure`. ### On-premise deployments For on-premise Artemis, pass your deployment's base URL with `--url` when configuring. All service connection variables are derived automatically from that URL — no separate microservice configuration is required. ```bash ./artemis-runner configure --url https://artemis.internal.company.com --token ``` ### SSL Configuration Configure SSL certificate verification with the `--ssl-verify` flag or the `ARTEMIS_SSL_VERIFY` environment variable: ```bash export ARTEMIS_SSL_VERIFY=true # Use system CA certificates (default) export ARTEMIS_SSL_VERIFY=false # Disable SSL verification export ARTEMIS_SSL_VERIFY=/path/to/ca/certificates.pem # Custom CA certificates ``` ## Usage Tips - Ensure your runner has adequate disk space for project dependencies - Keep the `start` process running — the runner is only online while it is running - Use meaningful runner names to identify them in the platform - Monitor runner logs to troubleshoot any connection issues # Advanced Usage This section covers advanced usage scenarios for the Artemis runner, including running multiple runners, resource management, proxy configuration, and where your code is downloaded and run. ## Running multiple runners You can run more than one runner at the same time. Runners that share a name form a **pool**: when a task comes in, Artemis sends it to any available runner in that pool. You have no control over which one is picked, so every runner in a pool should be interchangeable — same code, same environment, same toolchain. To scale out, just start several runners with the same name. Tasks are distributed across whichever ones are free. To create a **separate** pool, start a runner under a different name. Only one runner name is stored in the settings file, so pass `--runner-name` to override it: ```bash ./artemis-runner start --runner-name "my-runner-name" ``` Runners with different names appear as separate options on the platform and never share tasks. ## Resource Management ### Limiting RAM Usage You can control the amount of RAM available to your evaluations using the `--ram-limit-mb` flag or the `ARTEMIS_RAM_LIMIT_MB` environment variable. This is particularly useful on systems with limited resources or when you need consistent resource usage across environments. ```bash # Set RAM limit to 4GB (4096MB) via flag ./artemis-runner start --ram-limit-mb 4096 # Or via environment variable export ARTEMIS_RAM_LIMIT_MB=4096 ./artemis-runner start ``` :::note The RAM limit is specified in megabytes (MB). For example: - 1GB = 1024MB - 2GB = 2048MB - 4GB = 4096MB - 8GB = 8192MB ::: :::warning Setting the RAM limit too low may cause evaluations to fail if they require more memory than allocated. Monitor your evaluations' memory usage to determine appropriate limits. ::: ## Proxy Configuration If you're experiencing connection issues in a corporate environment with a proxy, configure `no_proxy` to allow direct connections to your Artemis deployment. ### Environment Variables - **`no_proxy`/`NO_PROXY`**: Comma-separated list of hosts to bypass the proxy ### Troubleshooting Connection Issues #### For SaaS Artemis (artemis.turintech.ai) ```sh export no_proxy=localhost,127.0.0.1,artemis.turintech.ai ./artemis-runner start ``` Direct connections to Artemis can be faster and more reliable than going through a corporate proxy. #### For On-premise Artemis ```sh # For domain-based deployment export no_proxy=localhost,127.0.0.1,artemis.internal.company.com # For IP-based deployment export no_proxy=localhost,127.0.0.1,192.168.41.1 ./artemis-runner start ``` ### Testing Connectivity Before starting the runner, verify connectivity: ```sh # Test direct connection (with no_proxy) curl -v https://artemis.turintech.ai # Test internal deployment curl -v https://artemis.internal.company.com ``` ### Diagnosing proxy issues 1. **Verify `no_proxy` is set correctly** ```sh echo $no_proxy ``` 2. **Check if the proxy is blocking Artemis** — SSL certificate errors may indicate proxy SSL inspection; connection timeouts may indicate proxy blocking ## Task output: where your code is downloaded and run When a task runs, the runner clones each candidate version of your code into a subfolder of its **worker output root** — your system's cache directory by default — executes your build, test, and benchmark commands there, and streams the results back to the Artemis platform. At command entry, `$PWD` is that candidate checkout (`output/build`); write `artemis_results.json` or `artemis_results.csv` there. The exact path is printed in the runner output at the start of each run. If you ever need to locate files or debug a failure, check there first — see [What's inside a task folder](#whats-inside-a-task-folder) for the layout. Two advanced options control this behaviour: **Worker Output Root** (where the files go) and **Delete Task Output** (whether files are kept after a run). To change either: 1. Run `./artemis-runner configure` 2. Choose **Edit Advanced Options** 3. Select the option you want to change ### Changing where tasks run (Worker Output Root) By default, the runner works inside your system's cache directory. If you'd rather have tasks run somewhere else — a larger disk, a faster drive, or simply a folder that's easier to find — set a custom location: 1. Run `./artemis-runner configure` 2. Choose **Edit Advanced Options** 3. Select **Worker Output Root** and enter the directory you want the runner to use All subsequent tasks will be downloaded and executed under that directory. ### Keeping files after a run (Delete Task Output) By default, the runner deletes a task's folder as soon as the task completes, so old runs don't fill up your disk. If you want to keep the files for inspection — for example, to look at build artefacts or dig into a failing test — turn this off: 1. Run `./artemis-runner configure` 2. Choose **Edit Advanced Options** 3. Select **Delete Task Output** and answer **No** :::warning Watch your disk space With **Delete Task Output** set to **No**, every run leaves its files behind, including a full copy of your repository per task. Clear out old task folders from the worker output root periodically. ::: ### Keeping built versions (Delete Mutated) This setting applies to [Code Optimization](#code-optimization) runs. **Delete Mutated** controls whether built versions are archived once they finish: with it set to **Yes**, a version's `build/` folder is copied into the `mutated/` folder; with **No**, the `build/` folder is simply deleted. To change it: 1. Run `./artemis-runner configure` 2. Choose **Edit Advanced Options** 3. Select **Delete Mutated** and answer **No** :::note **Delete Task Output** and **Delete Mutated** are independent: the first decides whether the whole task folder survives, the second decides whether built versions are kept inside it. ::: ### Reusing build artefacts (Incremental Build) This setting applies to batch validations. When **Incremental Build** is set to **Yes**, build artefacts from an earlier validation in the same batch run are reused by later validations, which can speed the run up; with **No**, each validation builds from scratch. [Code Optimization](#code-optimization) always builds incrementally, regardless of this setting. To change it: 1. Run `./artemis-runner configure` 2. Choose **Edit Advanced Options** 3. Select **Incremental Build** and answer **Yes** ### What's inside a task folder Each task gets its own folder, named `task-{task_id}`, inside the worker output root. The layout inside depends on which Artemis feature triggered the task. There are three main variations: #### [Code validation](../optimization/code-validation/code-validation-overview.md) Used for most activity on the Optimise page (other than Code Optimization): single and batch code validation, Artemis Intelligence, Spec Coder, and testing your commands from the Settings page. ``` task-{task_id}/ ├── input/ │ └── {project_id}/ # your code, as downloaded └── output/ ├── original_repo/ # pristine working copy ├── build/ # validated version — kept after the run (the last one, for batch validation) └── build_dir_backup/ # baseline with build artefacts (only when incremental builds are enabled) ``` #### [Code Optimization](../optimization/code-optimization/overview.md) Used for multi-target Code Optimization runs. ``` task-{task_id}/ ├── input/ │ └── {project_id}/ # your code, as downloaded └── output/ ├── original_repo/ # pristine working copy (baseline) ├── build/ # version currently being built (not kept — see note below) ├── mutated/ # archived built versions — inspect these after a run │ ├── 0/ # baseline (trial 0) │ └── {version_number}/ # one folder per candidate version └── build_dir_backup/ # baseline with build artefacts (only when incremental builds are enabled) ``` When you evaluate a single version from Code Optimization, the layout is the same except archived versions are stored under `mutated/{test_id}/`. #### [Changesets](./changeset.md) and [Discover](../optimization/discover/overview.md) Used for changeset evaluation. Discover uses changesets under the hood, so its tasks look the same. ``` task-{task_id}/ ├── input/ │ └── {project_id}/ # current state of changeset, as downloaded └── output/ └── build/ # build environment (copy of changeset code, kept after the run) ``` :::note What happens to the build/ folder The `build/` folder is where commands are actually executed against a candidate version. What happens to it when a run finishes depends on the feature: - **Code validation** and **Changesets / Discover**: the `build/` folder is preserved. For batch validation it holds the contents of the *last* version validated. - **Code Optimization**: the `build/` folder is ephemeral. Whether a built version is kept is governed by [Delete Mutated](#keeping-built-versions-delete-mutated) — use the `mutated/` folders to inspect built versions after a run. ::: ## Next Steps Once your runner is configured and running, you can: - Set up build commands in [Project Settings](/project-setup/settings/runner-and-scripts) ## Troubleshooting If you encounter connection issues: 1. Verify your saved settings in `settings.env` (re-run `configure` if needed) 2. Check your internet connection 3. Confirm the runner name is unique on your account 4. Make sure your registration token hasn't expired — regenerate it if it has 5. Review SSL certificate configuration if using HTTPS --- ## Changesets Review, publish, and open pull requests for your changesets — code changes that live entirely in Artemis. Your git remote stays untouched until you publish a branch or open a pull request. ![The Changesets list](./img/changeset-list.png) A changeset is created whenever you keep a result — for example, **Create PR** on a [Discover version](../optimization/discover/versions.md), or a version you've assembled from Optimise targets. Filter the list by **All**, **Unpublished**, **Published**, or **PR**, and search by name. --- ## Creating a pull request Open a changeset and choose **Create PR** to open the pull-request form. Fill in the **branch name**, the branch you're **merging into**, a **title**, and a **description** — or click **Generate with AI** to have the agent write the title and description from the diff. The changed files are shown below so you can review them before opening the PR. ![Create Pull Request — Generate with AI fills the fields, Create PR opens it](./img/changeset-create-pr.png) When you're happy with it, click **Create PR**. --- ## Reviewing the changes After the PR is created, the **File changes** tab shows the full diff for each changed file (here `cli/xxhsum.c`, `tests/cli-seed.sh`, and the `Makefile`). Use **Open in GitHub** to view the pull request on your git provider, or the download icon to grab the diff. ![File changes, with the Validations tab highlighted](./img/changeset-file-changes.png) Switch to the **Validations** tab to run the changeset's build, test, and benchmark checks before you merge. --- ## Validating a changeset On the **Validations** tab, choose a **runner** and the **commands** to run — these default to your project's build, test, and benchmark scripts. If no runner is connected, [set one up](../project-setup/settings/runner-and-scripts.md) first. Add or remove commands as needed, then click **Run validation**. ![Validation setup — pick a runner and commands, then Run validation](./img/changeset-validation-setup.png) Each command runs on the selected runner and reports **Passed** / **Failed**, with full **logs** you can expand — including any [custom metrics](../project-setup/settings/benchmarks.md) your benchmark writes to `artemis_results.json`. ![Validation results — each command passed, with logs](./img/changeset-validation-passed.png) Every validation run is kept — the **left panel** lists the **history** of past runs (status, timestamp, commit, and each command's result), so you can revisit earlier validations or start a fresh one with **Run new validation**. ![Validation history in the left panel](./img/changeset-validation-history.png) --- ## Opening the pull request in GitHub Once a changeset is published as a PR, it appears under the **PR** filter with a **PR** badge. Click **Open in GitHub** to jump straight to the pull request on your git provider. ![The PR filter, with Open in GitHub highlighted](./img/changeset-pr-github.png) --- ## Index your codebase Code indexing in Artemis allows you to create a comprehensive understanding of your codebase beyond just the specific files you've targeted for optimization. This broader context helps Artemis provide more intelligent and contextual suggestions when using Code Search or chatting with the agent. ### Why Index Your Code? When you index your code, Artemis: - Creates embeddings of your entire codebase - Understands relationships between different parts of your code - Provides more accurate and contextual responses in Code Search - Offers more intelligent suggestions during agent chat interactions ### How to Index Your Code - Access your project - Click on `Optimise`, `Targets` - Click on index you code ![indexing](./img/indexing-1.png) The indexing process will run in the background, and you'll be notified when it's complete. ### Using Indexed Code Once your code is indexed, you can: - Extract additional files related to one target, such as unit tests, implementation of an interface or similar code (e.g. find duplication) - Use the "Code Search" option when generating new target versions, this is more powerful than simple Ask LLM, and will use the full index as context. - Chat with the agent about your code with improved context ### Best Practices - Index your code after making significant changes to ensure the embeddings are up to date - Consider indexing before starting a new optimization task to get the most context-aware suggestions - Use indexing in conjunction with code extraction to get the most value from Artemis's features --- ## Custom Metrics Track domain-specific measurements — throughput, accuracy, error rates, or anything your benchmark produces. Artemis already records runtime, CPU, and memory automatically; custom metrics let you measure what matters to **your** project, then compare those values across versions of your code. ## How Artemis reads your metrics Your benchmark writes a results file; Artemis picks it up after every run — no extra configuration. 1. **Write a results file** — have your benchmark script write an `artemis_results.json` or `artemis_results.csv` to the project root before it exits. 2. **Run a benchmark** — run a benchmark from the project's execution settings, or let an optimisation run it. Each run produces one results file. 3. **Artemis picks it up** — after the run, Artemis reads the file from the project root and stores every value. If both a `.json` and a `.csv` exist, **JSON takes priority**. 4. **Compare across versions** — recorded values show up in the project's metrics table and feed the distribution and trend charts, so you can see how each version moves the numbers. ## File format Use any metric names you want. Each object (JSON) or row (CSV) is one measurement — run your benchmark multiple times to build a distribution. ```json title="artemis_results.json" [ { "throughput": 4500, "error_rate": 0.02 }, { "throughput": 4620, "error_rate": 0.01 }, { "throughput": 4480, "error_rate": 0.03 } ] ``` ```text title="artemis_results.csv" throughput,error_rate 4500,0.02 4620,0.01 4480,0.03 ``` :::info Numbers only Every value must be a finite number. Keep metric names consistent across measurements so they line up into one series. ::: The rules Artemis enforces: - The file must be named exactly `artemis_results.json` or `artemis_results.csv` and live in the working directory (project root), not a subfolder. - Every metric value must be a finite number (integer or float). No strings, booleans, null, or nested objects. - Use clear, consistent metric names across runs (e.g. `throughput`, `accuracy`, `error_rate`, `inference_ms`). - One run → a single JSON object: `{"throughput": 4500, "error_rate": 0.02}`. - Multiple measurements → a JSON array of objects, or a CSV with a header row and one numeric row per measurement. - If both a `.json` and a `.csv` exist, Artemis uses the JSON. ## Set it up with your coding agent Custom metrics need a small change to your benchmark code. Paste this prompt into your own coding agent (Claude Code, Cursor, Copilot…) inside your repo — it reads your benchmark and adds the `artemis_results` output for you. ```markdown I'm setting up **custom metrics** for TurinTech Artemis. Artemis runs my benchmark on a runner and, after each run, reads a results file from the project root to track performance metrics across versions of my code. Please update my benchmark so that, right before it exits, it writes the key metrics it measures to an `artemis_results.json` (or `artemis_results.csv`) file in the project root. Rules Artemis enforces: - The file must be named exactly `artemis_results.json` or `artemis_results.csv` and live in the working directory (project root), not a subfolder. - Every metric value must be a finite number (integer or float). No strings, booleans, null, or nested objects. - Use clear, consistent metric names across runs (e.g. throughput, accuracy, error_rate, inference_ms). - One run -> a single JSON object: {"throughput": 4500, "error_rate": 0.02} - Multiple measurements -> a JSON array of objects, or a CSV with a header row and one numeric row per measurement. - If both a .json and a .csv exist, Artemis uses the JSON. Steps: 1. Read my benchmark code and list the numeric metrics it already computes. 2. Pick the ones worth tracking and add code to write them to artemis_results.json before the benchmark exits. 3. If the benchmark runs in a separate directory, copy the results file back to the project root before exiting. 4. Run the benchmark locally and confirm the file appears in the project root with numeric values. 5. Show me the diff. ``` :::tip Prefer a guided, end-to-end setup? Install the `repo-setup` Artemis skill and run it in your terminal — it walks through build, test, and benchmark configuration, including custom metrics. See [Artemis Skills](/features/artemis-agent-skills). ::: ## Running in a separate directory If your benchmark runs somewhere other than the project root — a clone, a build dir, a container mount — copy the results file back before the script exits. ```bash # Run your benchmark wherever it lives, then copy the # results file back to the project root before exiting. ORIG=$(pwd) cd /path/to/clone ./run_bench.sh cp artemis_results.json "$ORIG/" ``` Artemis only looks at the **project root** after a run, so the file has to land there. Capturing `$(pwd)` first is the simplest way to copy it back from wherever your benchmark ran. ## What you get Once values are recorded, each metric gets a distribution (box plot) and a trend over time (line chart) — the same charts you'll see in the project's metrics table. The box plot shows the spread — minimum, quartiles, and median — so you can spot noise and outliers at a glance. The line chart shows each measurement in order, so a drift or regression across runs is easy to see. --- ## MCP Servers Configure Model Context Protocol (MCP) servers for your account. Configured servers are available across all agent runs on the Artemis platform — chat, planning, coding, and target generation. ![MCP Servers configuration](./img/mcp-servers.png) ## Supported transports Only HTTP-based transports are supported. SSE and Streamable HTTP endpoints are both accepted. Local command execution (stdio) is not available. ## Configuration format Define your servers under the `mcpServers` key. Each entry requires a `url` pointing to the endpoint. You can optionally include `headers` for authentication. ```json { "mcpServers": { "my-server": { "url": "https://mcp.example.com/sse", "headers": { "Authorization": "Bearer " } } } } ``` ## Adding servers Open [Platform Settings](/settings/user-settings) and select **MCP Servers** under Integrations. Add, edit, or remove server entries in the JSON editor. Your configuration is encrypted at rest. --- ## Agents Memory Agents Memory keeps a record of every experiment Artemis has run across all your projects. You can ask it questions — what has worked, what hasn't, and what ideas from one project might apply to another — without having to dig through past results yourself. ## How it works Every experiment Artemis runs is automatically saved as a memory. Over time this builds up a knowledge base that spans all your projects, so insights are never lost between runs. You can query this knowledge base in two ways: - **General memory chat** — ask questions across all your projects at once. - **Experiment-level chat** — open a specific experiment and ask questions scoped to that memory, with the full conversation history preserved per experiment. ## Accessing Agents Memory Click your **avatar** (or initials) in the top-right corner, then select **Agents Memory** from the dropdown. ![Accessing Agents Memory from the avatar dropdown](./img/access-memory.png) The page opens with three areas: - **Left panel (MEMORIES)** — lists all your stored experiments, searchable by keyword. Shows the total count and the project each experiment belongs to. - **Centre panel** — displays the selected experiment's detail, or a welcome prompt when nothing is selected. - **Right panel** — shows your chat history and quick-start prompts. Click **+ New chat** at the top of the left panel to start a fresh general chat across all your memories. ![Agents Memory overview — experiment list, chat history, and quick-start prompts](./img/all-experiments.png) ## The experiment detail view Clicking an experiment in the left panel opens its detail in the centre: - **Project path** — shows the project and optimisation the experiment belongs to, with an **Open in Discovery** link to jump directly to it. - **Status badge** — current state (e.g. Queued, Validated, Refuted, Inconclusive). - **Confidence** — the confidence score for this experiment's outcome. - **Created** — the date the experiment was created. - **Hypothesis** — the full hypothesis text describing what was changed and why. The right panel updates to show **CHATS ABOUT THIS MEMORY** — the conversation history scoped to this experiment. ![Experiment detail view with hypothesis, status, and scoped chat](./img/specific-experiment.png) ## Asking questions ### General prompts From the main Agents Memory view (no experiment selected), the right panel shows three quick-start buttons and a chat input. These cover the most common questions across all your projects: - **What reliably works** — "Looking across all my projects, which optimisation approaches have reliably improved performance, and which keep failing?" - **Don't repeat** — "What have I already tried and refuted, so I don't waste time repeating it?" - **Transferable wins** — "Which validated experiments could likely transfer to my other projects, and why?" You can also type any question into the **Ask about your memories…** input — the agent has access to all your experiments. ### Experiment-level prompts When you open a specific experiment, the right panel switches to **CHATS ABOUT THIS MEMORY** with its own quick-start prompts: - **Summarise** — "Summarise this experiment: the hypothesis, what the versions actually changed, and why it was concluded this way." - **The winning change** — "What did the best version change, and how did it move the metrics versus the baseline?" - **Try next** — "Given how this turned out, what follow-up experiments would be worth running — here or on similar code?" The chat input scopes automatically to the open experiment. You're not limited to these prompts — ask anything about the experiment. ## Chat history Every conversation you have in Agents Memory is saved. General chats appear in the **MEMORY CHATS** panel on the right of the main view. Experiment-level chats are saved under **CHATS ABOUT THIS MEMORY** and reappear whenever you open that experiment, so context is never lost between sessions. --- ## Settings Configure your project's execution environment and project-level details from the **Settings** tab inside any project. The Settings page has two sections accessible from the left sidebar: **Execution** and **Project**. --- ## Execution The Execution section lets you configure the runner and the commands Artemis uses to compile, test, and benchmark your code. ![Execution Settings](./img/settings-execution.png) ### Set up a runner Before configuring commands, [set up the Artemis Runner](/features/artemis-runner) if you haven't already. Select a runner from the **Runner Name** dropdown. The selected runner will pick up all execution tasks for this project. ### Command Configuration Configure the command for each execution stage: - **Compilation** — compiles the code. Ensures the code is free from syntax errors and is ready for execution. - **Unit Tests** — runs unit tests on the compiled code. Verifies that individual components function as expected. - **Benchmark** — runs your performance benchmark to measure runtime, CPU, and memory. Each command can be edited, duplicated, run manually, or deleted using the action icons on the right. ### Agent Assistant The right-hand panel in the Execution settings contains a built-in chat agent that can help you configure and troubleshoot your commands. The agent is hardware-aware — it knows the specifications of your connected runner (CPU, memory, platform) — and has full context of the commands you've already set up. You can ask it to: - Set up build commands for your project from scratch - Review and fix issues in your existing compilation, test, or benchmark commands - Suggest improvements based on your runner's hardware - Troubleshoot failures in any of the execution stages ### Custom Metrics Track metrics beyond the built-in runtime, CPU, and memory. Have your benchmark script write an `artemis_results.json` or `.csv` file to the **project root** before exiting — Artemis will automatically pick up and display any values in that file as additional score metrics. :::tip See the **File format & examples** section in the Custom Metrics panel for the expected JSON/CSV schema. ::: --- ## Project The Project section contains project-level configuration for your repository connection and settings. ![Project Settings](./img/settings-project.png) ### Fields - **Name** — the display name of your project. - **Description** — an optional description. - **Owner** — the owner of the project. - **Git Repository** — the URL of the connected Git repository. - **Git Branch** — the branch Artemis will use. - **Git Commit** — optionally pin to a specific commit hash. - **Code Authors** — the authors associated with this project. - **Git Key** — the authentication key used to access the repository. See [Using private code repositories](/project-setup/git-keys) for setup instructions. - **Auto Pull Request** — when enabled, Artemis will automatically open a pull request for accepted code changes. --- ## Next Steps After configuring your settings: [Validate your new code versions using these commands](optimization/code-validation/code-validation-overview.md) --- ## Quick Overview Artemis is built around four modules — Build, Maintain, Discover, and Optimise — that share a single connection to your codebase. Every module reads and writes the same source of truth. ![Artemis platform overview — Build, Maintain, Discover, Optimise](./img/platform-overview.png) --- ## Getting started ### Log in to Artemis Access Artemis via the web platform or your local deployment. After logging in you'll land on the **Projects** page. *New user?* [Create your account here](./signup-login.md) ### Create a project From the Projects page, click **+ Import Project** to connect a Git repository, upload a zip archive, or import a sample project. Or click **Plan with AI** to describe what you want to build and let the Planning Agent create a project and structured plan for you. For detailed instructions, see [Import your codebase](../project-setup/import-codebase.md). --- ## Build The Build module helps you generate and ship code through three modes: - **Plan** — a Planning Agent breaks your goal into sub-tasks and implementation steps - **Standalone** — direct code generation tasks that apply changes automatically or via Git - **Chat** — conversational agent assistance for coding decisions, debugging, and exploration [Learn more about Build →](../build/overview.md) --- ## Maintain Maintain gives you a structured workflow for keeping your codebase clean and standards-compliant. ![Maintain workflow — Rules → Scan → Triage → Fix](./img/maintain-workflow.png) - **Rules** — define quality, security, and style standards. Create rules with agent assistance, import from another project, or start from Artemis's built-in library. - **Scan** — run rules against your codebase. Select up to 20 rules per scan, set an issue budget, and watch live scan logs. - **Triage** — review findings filtered by severity. Mention `#Issues` and `#Rules` directly in chat. - **Fix** — send any issue straight to an AI coding agent. Complex issues can be escalated to Discover or a Build plan automatically. [Learn more about Maintain →](../scan/overview.md) --- ## Discover Discover is the experimentation engine — explore objectives, generate ideas, and run experiments that produce validated code variants. ![Discover experiment lifecycle](./img/discover-lifecycle.png) - **Objective** — define what you want to improve - **Ideas** — the agent proposes candidate approaches - **Experiments** — each idea becomes an experiment that moves through Draft → Queued → In Progress → Concluded - **Versions** — each experiment produces measured code variants, scored against your metrics - **Goals / Score** — validate variants against your performance targets, then iterate [Learn more about Discover →](../optimization/discover/overview.md) --- ## Optimise The Optimise module connects code targeting, version generation, and validation into a single pipeline: - **[Code targeting](../optimization/code-targeting/overview.md)** — identify areas to improve using agents, file-by-file scanning, or tool integrations - **[Version generation](../optimization/version-generation/overview.md)** — generate alternatives using LLMs, agents, or Artemis Intelligence - **[Validation](../optimization/code-validation/code-validation-overview.md)** — verify improvements against real runtime, memory, and CPU metrics on your runner - **[Changesets](../features/changeset.md)** — package your best versions and open a pull request directly from Artemis [Learn more about Optimise →](../optimization/overview.md) --- ## Agents All modules are powered by Artemis agents. In v3.0.0, agents are faster, more resilient, and easier to manage. ![Agent capabilities — multi-tab chat and global checkpoint resume](./img/agent-capabilities.png) - **Multi-tab chat** — run multiple agent conversations in parallel without losing context - **Global checkpoint resume** — if an agent fails mid-run, it picks up from the last saved state automatically - **Streaming output** — responses stream directly from the LLM for noticeably faster results - **Agents Memory** — browse and query past Discovery experiments across all your projects [Learn more about Agents Memory →](../features/memories.md) --- ## Next steps - [Import your codebase](../project-setup/import-codebase.md) - [Set up a runner](../features/artemis-runner.md) - [Read the v3.0.0 release notes](../release-notes/v-3.0.0.md) --- ## Account Setup & Authentication Create your Artemis account or log in to your existing account to start optimizing your code. This guide covers the complete account setup process, including authentication options and initial configuration. ## Creating Your Account ### Step 1: Access the Sign Up Page Navigate to the Artemis platform and click the **Sign Up** button. ### Step 2: Complete Registration Fill in the registration form with your details: ![Artemis sign up form](./img/sign-up-form-1.png) Click **Create Account** to complete registration. ### Step 3: Account Verification After registration, you'll receive a verification email. Click the verification link to activate your account. :::info Account Approval Process All new accounts require approval from a TurinTech administrator before you can access the platform. After email verification: 1. Your account request will be reviewed by the TurinTech team 2. You'll receive an email notification once your account is approved 3. You can then log in and start using Artemis **Approval typically takes 1-2 business days.** If you experience delays, contact TurinTech support at support@turintech.ai ::: ## Logging In ### Standard Login If you already have an Artemis account, use the login form: ![Login form](./img/log-in-form-1.png) :::tip Git Setup Recommendation We recommend setting up Git access immediately after account creation. This allows you to import private repositories and enables advanced features like automated analysis triggers. **Next Step**: Follow our comprehensive [Git Keys Setup Guide](project-setup/git-keys.md) ::: ## Troubleshooting Account Issues ### Common Login Problems **Forgot Password** 1. Click "Forgot Password" on the login page 2. Enter your email address 3. Check your email for reset instructions 4. Create a new strong password **Account Locked** Contact your administrator or support@turintech.ai **Email Verification Issues** 1. Check spam/junk folder 2. Request new verification email 3. Contact support if not received within 10 minutes --- **Next Steps**: - [Complete your first code analysis](./quick-overview.md) - [Set up Git repository access](project-setup/git-keys.md) - [Explore advanced features](build/overview.md) --- ## Artemis Documentation Artemis is an AI-powered code intelligence platform that helps engineering teams build, maintain, discover, and optimise their codebases — through intelligent agents, real execution metrics, and a unified multi-module workflow. --- ## The four modules ### [Build](./build/overview.md) Plan tasks, generate code, and run agentic development workflows from natural language. Includes Plan mode for structured strategies, Standalone tasks for direct code changes, and Chat for conversational assistance. ### [Maintain](./scan/overview.md) Define quality rules, scan your codebase for violations, triage findings by severity, and fix them directly with an AI coding agent. Rules can be created, imported, or seeded from Artemis's built-in library. ### [Discover](./optimization/discover/overview.md) Explore objectives, generate ideas and experiments, and track code variants through their full lifecycle — from draft to validated. A rebuilt ground-up experience in v3.0.0 with multi-LLM review, multi-metric plots, and a unified experiment board. ### [Optimise](./optimization/overview.md) Target specific code, generate improved versions, validate against real execution metrics, and ship regression-safe changes. Connects directly to Discover experiments and produces changesets you can open as pull requests. --- ## Agents Artemis agents power all four modules. In v3.0.0 they got significantly faster and more resilient: - **Streaming from the LLM** — noticeably faster output for long responses - **Global checkpoint resume** — if an agent fails mid-run, it recovers from the last good state - **Multi-tab chat** — run multiple agent conversations in parallel tabs - **Agents Memory** — browse past Discovery experiments across all projects and ask questions about them --- ## Get started - [Quick Overview](./getting-started/quick-overview.md) — the full Artemis workflow in one page - [Sign up / Log in](./getting-started/signup-login.md) — create your account - [Import your codebase](./project-setup/import-codebase.md) — connect a repository or start from scratch - [Git Keys](./project-setup/git-keys.md) — authenticate with your git provider --- ## Platform & settings - [Platform Settings](./settings/user-settings.md) — agent limits, contexts, model management, MCP servers - [Admin Settings](./settings/admin-settings.md) — per-user governance, usage tracking, feature flags - [Artemis Runner](./features/artemis-runner.md) — run builds and benchmarks on your own hardware - [Artemis CLI](./features/artemis-cli.md) — manage projects and tasks from the terminal - [MCP Servers](./features/mcp-servers.md) — connect external data sources to your agents - [Agents Memory](./features/memories.md) — search and query past experiments across all projects --- ## Deployment & architecture - [Deployment Options](./deployment/deployment-options.md) — SaaS or on-premise - [Architecture Overview](./architecture/architecture-diagram.md) — how Artemis works under the hood - [Release Notes](./release-notes/v-3.0.0.md) — what's new in v3.0.0 --- ## Need help? - [FAQs](./FAQs.md) - Email: support@turintech.ai --- ## Artemis Standard T&Cs ## For web-based users These Standard Terms (SaaS) are made between Turing Intelligence Technology Limited (Company No. 10318035) whose registered office is at Unit 2G, 2nd Floor, 1 Finsbury Avenue EC2M 2PF (“we” “us” “our”) and the customer who orders our services (“you”). ### Background (A) We have developed a hosted service providing you with access to our Artemis code optimisation tools made available on a subscription basis via the internet. (B) You wish to use our service in your business operations. (C) We have agreed to provide and you have agreed to take and pay for our service subject to these terms and conditions. ### Agreed terms 1. Agreement 1.1 Your use of the Service is governed by these Standard Terms and Conditions. 1.2 When we use the term “this Agreement” in any of these Standard Terms and Conditions or an Order, we are referring to both of them. 1.3 Your use of the Service includes the ability to enter into further transactions with us, use additional services and make purchases electronically. You acknowledge that your signature or electronic assent to an Order constitutes your acceptance that the terms of this Agreement and apply to each further transaction, use of additional services and electronic purchase. 1.4 In our sole discretion we may accept or reject any Order that you submit. Only an executed Order, or the commencement of the Service, shall constitute our acceptance of an Order. 2. Defined Terms 2.1 The definitions and rules of interpretation in this clause apply in this Agreement. **Additional Fees**: means fees relating to Subscription Fees for additional User Licences or additional services that we have agreed to provide under this Agreement as specified in a signed Order or agreed in writing by the parties. **Authorised Users**: those employees, agents and independent contractors of you who are authorised by you to use the Service and Documentation as described in clause 3.2. **Business Day**: a day other than a Saturday, Sunday or public holiday in England when banks in London are open for business. **Confidential Information**: information consisting of technical or commercial know-how, specifications, inventions, processes or initiatives or relating to a party's business, customers, products or services and which in either case is proprietary or confidential in nature and information which is particularly identified as "Confidential Information" by the parties. **Data Protection Policy**: our data protection policy as put in place and amended from time to time in accordance with clause 19 (Variation). **Data Protection Legislation**: the UK Data Protection Legislation and (for so long as and to the extent that the law of the European Union has legal effect in the UK) the General Data Protection Regulation ((EU) 2016/679) and any other directly applicable European Union regulation relating to privacy. **Documentation**: the documents, user instructions and materials relating to use of the Service made available to you by us by any means. Initial Subscription Term: the initial term of this Agreement as set out in an Order. **Large Language Models**: A model that is capable of intaking, processing, and generating text and content in other modalities. **License**: means the license granted in relation to your use of the Platform described in clause 3.1. **Normal Business Hours**: 8.00 am to 6.00 pm local UK time, each Business Day. **Open-Source Software**: any software licensed under any form of open-source licence meeting the Open Source Initiative's Open Source Definition (http://www.opensource.org/docs/definition.php) or any libraries or code licensed from time to time under the General Public Licence (as described by the Free Software Foundation and set out at http://www.gnu.org/licenses/gpl.html), or anything similar, included or used in the provision of the Service. Order means (i) the order form (either in electronic or paper form) provided to you by us for signature that describes the type or types of services you are purchasing, and that is signed by you, either manually or electronically, and (ii) any other online order that you submit or accept for the Service, (iii) your use or acceptance of the Service. **Output**: means new, amended or optimised code or coding suggestions or recommendations generated by using our Platform and including code generated by Large Language Models accessed using our Platform. **Platform**: means our website (currently as updated or replaced from time to time) and all of our proprietary or licensed software programs, control panels and tools accessed using our website or that form part of our Service. **Personal Data**: has the meaning given in clause 12.2. **Renewal Period**: the period described in clause 16.1. **Service**: our subscription service for optimising software delivered online via our Platform, as more particularly described in the Order and Documentation. **Subscription Fees**: the subscription fees payable by you to us for the User Licences, as set out in an Order. **Subscription Term**: has the meaning given in clause 16.1 (being the Initial Subscription Term together with any subsequent Renewal Periods). **UK Data Protection Legislation**: any data protection legislation from time to time in force in the UK including the Data Protection Act 2018 or any successor legislation. **User Licences**: the user licences purchased by you pursuant to clause 13.1 which entitle Authorised Users to access and use the Service and the Documentation in accordance with this Agreement. **Virus**: any thing or device (including any software, code, file or programme) which may: prevent, impair or otherwise adversely affect the operation of any computer software, hardware or network, any telecommunications service, equipment or network or any other service or device; prevent, impair or otherwise adversely affect access to or the operation of any programme or data, including the reliability of any programme or data (whether by re-arranging, altering or erasing the programme or data in whole or part or otherwise); or adversely affect the user experience, including worms, trojan horses, viruses and other similar things or devices. **Your Data**: data inputted onto the Platform by you or Authorised Users. **Your Software**: software programs uploaded by you or Authorised Users for optimisation using the Platform. 2.2 Clause, schedule and paragraph headings shall not affect the interpretation of this Agreement. 2.3 A person includes an individual, corporate or unincorporated body (whether or not having separate legal personality). 2.4 Unless the context otherwise requires, words in the singular shall include the plural and in the plural shall include the singular. 2.5 A reference to a statute or statutory provision is a reference to it as it is in force as at the date of this Agreement. 2.6 A reference to writing or written includes e-mail. 3. User Licences 3.1 Subject to you purchasing the User Licences in accordance with this Agreement, we hereby grant to you a non-exclusive, non-transferable right, without the right to grant sublicences, to permit the Authorised Users to use the Service and the Documentation during the Subscription Term solely for your internal business operations. 3.2 In relation to the Authorised Users, you undertake that: (a) the maximum number of Authorised Users entitled to use the Service and the Documentation shall not exceed the number of User Licences specified in an Order; (b) you will not allow or suffer any User Licence to be used by anyone who is not an Authorised User named in an Order unless we have approved the use in writing; (c) you shall permit us to audit the Service in order to establish the name and password of each Authorised User and any unauthorised use of the Service and you shall pay to us an amount equal to any underpayment. 3.3 You shall ensure that the Authorised Users use the Platform in accordance with this Agreement and shall be responsible for any Authorised User's breach of this Agreement. 3.4 You may, from time to time during any Subscription Term, make a request to purchase additional User Licences and we shall consider such request and, if agreed, grant access to the Service and the Documentation to such additional Authorised Users within a reasonable period. 3.5 You shall use all reasonable endeavours to prevent any unauthorised access to, or use of, the Service and/or the Documentation and, in the event of any such unauthorised access or use, promptly notify us. 3.6 The rights provided under this Agreement are granted to you only, and shall not be considered granted to any subsidiary or holding company of you 4. Service 4.1 We shall, during the Subscription Term and subject to us receiving the Subscription Fees, provide the Service and make available the Documentation to you on and subject to the terms of this Agreement. 4.2 We shall use commercially reasonable endeavours to make the Service available 24 hours a day, seven days a week, except for: (a) planned maintenance carried out during the maintenance window of 10.00 pm to 2.00 am UK time; and (b) unscheduled maintenance performed outside Normal Business Hours, provided that we have used reasonable endeavours to give you at least 6 Normal Business Hours' notice in advance. 4.3 If the commencement of the Service or the Service Start Date is conditional upon payment of the Subscription Fees or satisfaction of any other condition, we shall have an absolute discretion to determine that such condition is, in our view, not satisfied or is unlikely to be satisfied and to terminate this agreement with immediate effect without any liability to you. 5. Support Services We will provide you with up to five (5) hours per week of standard support services during Normal Business Hours as part of the Service and at no additional cost to you, in accordance with our support policy in effect at the time that the Service is provided. We may put in place and amend the support policy in our sole and absolute discretion from time to time in accordance with clause 19. 6. Storage 6.1 Your Software may be stored on the Platform provided that adequate storage capacity has been first agreed in a signed Order and you have paid the applicable storage fees in advance of the storage requirement arising. You are responsible for ensuring that you have purchased adequate storage for your requirements in advance. 6.2 Subject to our obligation to provide storage agreed and paid for in accordance with clause 6.1, we are under no obligation to store Your Software and we are not responsible for any loss or damage to Your Software due to inadequate storage capacity. 6.3 Our storage obligations in clauses 6.1 and 6.2 are subject to the provisions of any storage or back-up policy adopted by us and advised to you from time to time in accordance with clause 19. 7. Variations 7.1 We may, from time to time and without notice to you, vary the Service provided such changes do not have a material adverse effect on the quality of the Service. 7.2 Additional support, services and/or facilities must be agreed in a signed Order (or approved by us in writing) in either case specifying the additional support, services and/or facilities and any Additional Fees that are payable. 8. Restrictions 8.1 For the avoidance of doubt, the restrictions in clause 8.2 shall not apply to Your Software or derivations of Your Software produced using our Service. 8.2 Subject to clause 8.1, you may not: (a) attempt to copy, modify, duplicate, create derivative works from, frame, mirror, republish, download, display, transmit, or distribute all or any portion of the Platform in any form or media or by any means; (b) attempt to de-compile, reverse compile, disassemble, reverse engineer or otherwise reduce to human-perceivable form all or any part of the Platform; (c) license, sell, rent, lease, transfer, assign, distribute, display, disclose, or otherwise commercially exploit, or otherwise make the Platform available to any third party except the Authorised Users; (d) give access to the Platform through any network of computers to users who are not Authorised Users; (e) use the Platform to develop a similar or competing product or service; (f) attempt to reconstruct or discover any source code, underlying ideas, algorithms, file formats or programming interfaces of the Platform; (g) modify or create derivative works of the Platform; (h) remove or obscure any product identification or proprietary notices in the Platform; or (i) publish benchmarks or performance information about the Platform. 8.3 You shall not access, store, distribute or transmit any Viruses, or any material during the course of your use of the Platform that: (a) is unlawful, harmful, threatening, defamatory, obscene, infringing, harassing or racially or ethnically offensive; (b) facilitates illegal activity; (c) depicts sexually explicit images; (d) promotes unlawful violence; (e) is discriminatory based on race, gender, colour, religious belief, sexual orientation, disability; or (f) is otherwise illegal or causes damage or injury to any person or property; and we reserve the right, without liability or prejudice to our other rights to you, to disable your access to any material that breaches the provisions of this clause. 9. Warranty and disclaimers 9.1 We undertake that the Service will be provided substantially in accordance with the Order and Documentation and with reasonable skill and care. 9.2 The undertaking at clause 9.1 shall not apply to the extent of any non-conformance which is caused by use of the Service contrary to our instructions, or modification or alteration of the Service by any party other than us. If the Service does not conform with the foregoing undertaking, we will, at our expense, use all reasonable commercial endeavours to correct any such non-conformance promptly, or provide you with an alternative means of accomplishing the desired performance. Such correction or substitution constitutes your sole and exclusive remedy for any breach of the undertaking set out in clause 9.1. 9.3 We: (a) do not warrant that the Service or your use of the Platform will meet your requirements, be fit for a particular purpose or be compatible with any software and hardware (b) do not warrant that your use of the Service will be uninterrupted or error-free; and (c) are not responsible for any delays, delivery failures, or any other loss or damage resulting from the transfer of Your Software over communications networks and facilities, including the internet, and you acknowledge that the Service and Documentation may be subject to limitations, delays and other problems inherent in the use of such communications facilities. 9.4 We do not provide any assurance whatsoever in relation to the results of using our Service and our Service should not be considered as advice or an endorsement in respect of any results obtained by using our Service Large Language Models 9.5 We give no warranty whatsoever regarding your right to access or use Large Language Models or any data comprised within Large Language Models and you acknowledge that you are responsible for: (a) the selection and use of Large Language Models when using our Service; (b) obtaining any licenses, consents or approvals that may be necessary or desirable before you access or use Large Language Models or software or data produced by or from Large Language Models; and (c) complying with all licensing terms and restrictions that apply to your access or use Large Language Models or software or data produced by or from Large Language Models. 9.6 Due to the nature of our Service and artificial intelligence generally, you acknowledge and accept that we make no representations, warranties or guarantees (whether express or implied) that the data, software and content made available to you by utilising Large Language Models, is complete, accurate or up-to-date. 9.7 Our Service makes suggestions and recommendations using Large Language Models however you are responsible for reviewing all suggestions and recommendations and deciding whether to integrate any suggestions and recommendations into Your Software. You assume sole responsibility for testing and assessing results and conclusions drawn from using Large Language Models. Your Software 9.8 You are responsible for Your Software and represent and warrant that you have all rights, licenses, and permissions required to upload Your Software to the Platform and apply our Service to Your Software. 9.9 You are solely responsible for the application of our Service to Your Software and evaluating the suggestions made by our Service for accuracy and appropriateness for your use case, including by utilizing human review as appropriate. 9.10 We shall have no liability for any damage caused by errors or omissions in Your Software or any information, instructions or scripts provided to us by you in connection with the Service, or any actions taken by us at your direction. Outputs 9.11 You must assess the suitability, adequacy and appropriateness of our Service and all Outputs and you must rely on your own testing, investigations and professional judgment of the accuracy and usefulness of our Service and all Outputs. 9.12 Due to the nature of our Service and artificial intelligence generally, you acknowledge and accept that: (a) Output may not be unique and other users may receive similar content by using our Service; and (b) responses that are requested by and generated for other users are not considered your Output. The assignment of Output contained in clause 10.3 below does not extend to other users’ output or any content delivered by third parties. 10. Proprietary rights 10.1 The Platform belongs to us (or our third party licensors) and you acquire no rights in or to the Platform. Except as expressly stated herein, this Agreement does not grant you any rights to, under or in, any patents, copyright, database right, trade secrets, trade names, trade marks (whether registered or unregistered) or any other rights or licences in respect of the Platform. 10.2 The Platform may incorporate or provide access to Large Language Models and Open-Source Software and we make no representation or warranty whatsoever in relation to such Large Language Models or Open-Source Software. Licenses to which Large Language Models and Open-Source Software are subject shall apply to such Large Language Models and Open-Source Software on a standalone basis instead of this Agreement. 10.3 As between us and you, and to the extent permitted by applicable law, you (a) retain all ownership rights to Your Data and (b) own all Output. We hereby assign to you all our right, title, and interest, if any, in and to Output. 11. Your Data 11.1 We acknowledge that you own all right, title and interest in and to all of Your Data and shall have sole responsibility for the legality, reliability, integrity, accuracy and quality of Your Data. 11.2 You agree that you will be solely responsible for all of Your Data that you create or upload using our Platform. Specifically, you agree, represent and warrant that you have the right to create or upload Your Data and the right to use all materials of which it is comprised and that it will not contravene any of the restrictions in clause 8 (Restrictions). 11.3 You agree that you will be liable to us and will, to the fullest extent permissible by law, indemnify us for any breach of the warranties given by you under clause 11.2. You will be responsible for any loss or damage suffered by us as a result of such breach. 11.4 We may reject, reclassify, or remove Your Data created or uploaded onto the Platform where Your Data, in our sole opinion, violates any of the restrictions in clause 8 (Restrictions). 12. Data Protection 12.1 Both parties will comply with all applicable requirements of the Data Protection Legislation. This clause 12 is in addition to, and does not relieve, remove or replace, a party's obligations under the Data Protection Legislation. In this clause 12, Applicable Laws means (for so long as and to the extent that they apply to us) the law of the European Union, the law of any member state of the European Union and/or Domestic UK Law; and Domestic UK Law means the UK Data Protection Legislation and any other law that applies in the UK. 12.2 The parties acknowledge that for the purposes of the Data Protection Legislation, you are the data controller and we are the data processor (where Data Controller and Data Processor have the meanings as defined in the Data Protection Legislation). Our Data Protection Policy sets out the subject matter, nature and purpose of processing by us, the duration of the processing and the types of personal data (as defined in the Data Protection Legislation, Personal Data) and categories of Data Subject. 12.3 Without prejudice to the generality of clause 12.1 you will ensure that you have all necessary appropriate consents and notices in place to enable lawful transfer of the your Personal Data to us for the duration and purposes of this Agreement. 12.4 Without prejudice to the generality of clause 12.1, we shall, in relation to your Personal Data processed in connection with the performance by us of our obligations under this Agreement: (a) process your Personal Data only on your written instructions, which may be: (i) specific instructions given to us by your authorised representative in writing; or (ii) the general instructions set out in our Data Protection Policy; or (iii) unless we are required by Applicable Laws to otherwise process your Personal Data. Where we are relying on Applicable Laws as the basis for processing your Personal Data, we shall promptly notify you of this before performing the processing required by the Applicable Laws unless those Applicable Laws prohibit us from so notifying you; (b) ensure that we have in place appropriate technical and organisational measures to protect against unauthorised or unlawful processing of your Personal Data and against accidental loss or destruction of, or damage to, your Personal Data, appropriate to the harm that might result from the unauthorised or unlawful processing or accidental loss, destruction or damage and the nature of the data to be protected, having regard to the state of technological development and the cost of implementing any measures (those measures may include, where appropriate, pseudonymising and encrypting your Personal Data, ensuring confidentiality, integrity, availability and resilience of our systems and services, ensuring that availability of and access to your Personal Data can be restored in a timely manner after an incident, and regularly assessing and evaluating the effectiveness of the technical and organisational measures adopted by it); (c) ensure that all personnel who have access to and/or process your Personal Data are obliged to keep your Personal Data confidential; (d) not transfer your Personal Data outside of the European Economic Area unless your prior written consent has been obtained and the following conditions are fulfilled: (i) either of us has provided appropriate safeguards in relation to the transfer; (ii) the data subject has enforceable rights and effective legal remedies; (iii) we comply with our obligations under the Data Protection Legislation by providing an adequate level of protection to your Personal Data that is transferred; and (iv) we comply with reasonable instructions notified to it in advance by you with respect to the processing of your Personal Data; (e) assist you, at your cost, in responding to any request from a Data Subject and in ensuring compliance with our obligations under the Data Protection Legislation with respect to security, breach notifications, impact assessments and consultations with supervisory authorities or regulators; (f) notify you without undue delay on becoming aware of a Personal Data breach; (g) at your written direction, delete or return your Personal Data and copies thereof to you on termination of the Agreement unless required by Applicable Law to store your Personal Data; and (h) maintain complete and accurate records and information to demonstrate our compliance with this clause 6 and allow for audits by you or your designated auditor. 12.5 You consent to us appointing the third parties listed in our Data Protection Policy together with such replacement or additional third parties as we shall notify to you in writing from time to time as third-party processors of our Personal Data under this Agreement. We confirm that we have entered or (as the case may be) will enter with each third-party processor into a written agreement incorporating terms which are substantially similar to those set out in this clause 12. 12.6 We may, at any time on not less than 30 days’ notice, revise this clause 12 by replacing it with any applicable controller to processor standard clauses or similar terms forming party of an applicable certification scheme (which shall apply when replaced by attachment to this Agreement). 13. Charges and payment 13.1 You shall pay the Subscription Fees to us for the User Licences and any Additional Fees in accordance with the terms of each Order and this clause 13. 13.2 If we have not received payment within 7 days after the due date, and without prejudice to any other rights and remedies of us: (a) we may, without liability to you, disable your password, account and access to all or part of the Service and we shall be under no obligation to provide any or all of the Service while the invoice(s) concerned remain unpaid; and (b) interest shall accrue on a daily basis on such due amounts at an annual rate equal to 4% over the then current base lending rate of our bankers in the UK from time to time, commencing on the due date and continuing until fully paid, whether before or after judgment. 13.3 All amounts and fees stated or referred to in this Agreement: (a) shall be payable in pounds sterling; (b) are non-cancellable and non-refundable; (c) are exclusive of value added tax, which shall be added to our invoice(s) at the appropriate rate. 13.4 We shall be entitled to increase the Subscription Fees and any Additional Fees at the start of each Renewal Period upon 90 days' prior notice to you and the relevant Order shall be deemed to have been amended accordingly. 13.5 You are not entitled to a refund of Subscription Fees if you cease to use the Service. 14. Confidentiality 14.1 Each party may be given access to Confidential Information from the other party in order to perform its obligations under this Agreement. A party's Confidential Information shall not be deemed to include information that: (a) is or becomes publicly known other than through any act or omission of the receiving party; (b) was in the other party's lawful possession before the disclosure; (c) is lawfully disclosed to the receiving party by a third party without restriction on disclosure; or (d) is independently developed by the receiving party, which independent development can be shown by written evidence. 14.2 Subject to clause 14.3, each party shall hold the other's Confidential Information in confidence and not make the other's Confidential Information available to any third party, or use the other's Confidential Information for any purpose other than the implementation of this Agreement. 14.3 A party may disclose Confidential Information to the extent such Confidential Information is required to be disclosed by law, by any governmental or other regulatory authority or by a court or other authority of competent jurisdiction. 15. Limitation of liability 15.1 This clause 15 sets out our entire financial liability (including any liability for the acts or omissions of its employees, agents and sub-contractors) to you: (a) arising under or in connection with this Agreement; (b) in respect of any use made by you of the Services and Documentation or any part of them; and (c) in respect of any representation, statement or tortious act or omission (including negligence) arising under or in connection with this Agreement. 15.2 Except as expressly and specifically provided in this Agreement: (a) we shall have no liability for any disclaimed matters; (b) all warranties, representations, conditions and all other terms of any kind whatsoever implied by statute or common law are, to the fullest extent permitted by applicable law, excluded from this Agreement; and (c) the Services and the Documentation are provided to you on an "as is" basis. 15.3 Nothing in this Agreement excludes our liability: (a) for death or personal injury caused by our negligence; or (b) for fraud or fraudulent misrepresentation. 15.4 Subject to clause 15.1 and clause 15.3: (a) we shall not be liable whether in tort (including for negligence or breach of statutory duty), contract, misrepresentation, restitution or otherwise for any loss of profits, loss of business, depletion of goodwill and/or similar losses or loss or corruption of data or information, or pure economic loss, or for any special, indirect or consequential loss, costs, damages, charges or expenses however arising under this Agreement including in relation the supply and use of Third-Party Software; and (b) our total aggregate liability in contract, tort (including negligence or breach of statutory duty), misrepresentation, restitution or otherwise, arising in connection with the performance or contemplated performance of this Agreement shall be limited to the total Subscription Fees paid for the User Licences during the 12 months immediately preceding the date on which the claim arose. 16. Term and termination 16.1 This Agreement shall, unless otherwise terminated as provided in this clause 16, commence on the Service Start Date and shall continue for the Initial Subscription Term and, thereafter, this Agreement shall be automatically renewed for successive periods of 12 months (each a Renewal Period), unless: (a) either party notifies the other party of termination, in writing, prior to the commencement of any Renewal Period, in which case this Agreement shall terminate upon the expiry of that Renewal Period; or (b) otherwise terminated in accordance with the provisions of this Agreement; and the Initial Subscription Term together with any subsequent Renewal Periods shall constitute the Subscription Term. 16.2 Without affecting any other right or remedy available to it, either party may terminate this Agreement with immediate effect by giving written notice to the other party if: (a) the other party fails to pay any amount due under this Agreement on the due date for payment and remains in default not less than 10 Business Days after being notified in writing to make such payment; (b) the other party commits a material breach of any other term of this Agreement which breach is irremediable or (if such breach is remediable) fails to remedy that breach within a period of 10 Business Days after being notified in writing to do so; (c) the other party suspends, or threatens to suspend, payment of its debts or is unable to pay its debts as they fall due or admits inability to pay its debts or is deemed unable to pay its debts within the meaning of section 123 of the Insolvency Act 1986; or (d) the other party suspends or ceases, or threatens to suspend or cease, carrying on all or a substantial part of its business. 16.3 On termination of this Agreement for any reason: (a) all licences granted under this Agreement shall immediately terminate and you shall immediately cease all use of the Services and/or the Documentation; (b) each party shall return and make no further use of any equipment, property, Documentation and other items (and all copies of them) belonging to the other party; (c) we may destroy or otherwise dispose of Your Data and Your Software in our possession unless we receive, no later than ten days after the effective date of the termination of this Agreement, a written request for the delivery to you of the then most recent back-up of Your Data and Your Software. We shall use reasonable commercial endeavours to deliver the back-up to you within 30 days of our receipt of such a written request, provided that you have, at that time, paid all fees and charges outstanding at and resulting from termination (whether or not due at the date of termination). You shall pay all reasonable expenses incurred by us in returning or disposing of Your Data and Your Software; and (d) any rights, remedies, obligations or liabilities of the parties that have accrued up to the date of termination, including the right to claim damages in respect of any breach of the agreement which existed at or before the date of termination shall not be affected or prejudiced. 17. Force majeure We shall have no liability to you under this Agreement if it is prevented from or delayed in performing our obligations under this Agreement, or from carrying on our business, by acts, events, omissions or accidents beyond our reasonable control, including, without limitation, strikes, lock-outs or other industrial disputes (whether involving our workforce or any other party), failure of a utility service or transport or telecommunications network, act of God, war, riot, civil commotion, malicious damage, compliance with any law or governmental order, rule, regulation or direction, accident, breakdown of plant or machinery, fire, flood, storm or default of suppliers or sub-contractors, provided that you are notified of such an event and its expected duration. 18. Conflict If there is an inconsistency between any of the provisions in the main body of this Agreement and the Order, the provisions in the Order shall prevail. 19. Variation No variation of this Agreement shall be effective unless it is in writing and signed by the parties (save for policies in relation to data protection, back-up, storage and support services which we may (acting reasonably) put in place and amend from time to time provided that such policies are notified to you and are in a form typically required by software service providers, in which case such policies shall take effect and be binding upon you from the time they are notified to you). 20. Waiver No failure or delay by a party to exercise any right or remedy provided under this Agreement or by law shall constitute a waiver of that or any other right or remedy, nor shall it prevent or restrict the further exercise of that or any other right or remedy. No single or partial exercise of such right or remedy shall prevent or restrict the further exercise of that or any other right or remedy. 21. Rights and remedies Except as expressly provided in this Agreement, the rights and remedies provided under this Agreement are in addition to, and not exclusive of, any rights or remedies provided by law. 22. Severance 22.1 If any provision (or part of a provision) of this Agreement is found by any court or administrative body of competent jurisdiction to be invalid, unenforceable or illegal, the other provisions shall remain in force. 22.2 If any invalid, unenforceable or illegal provision would be valid, enforceable or legal if some part of it were deleted, the provision shall apply with whatever modification is necessary to give effect to the commercial intention of the parties. 23. Entire agreement 23.1 This Agreement constitutes the entire agreement between the parties and supersedes and extinguishes all previous agreements, promises, assurances, warranties, representations and understandings between them, whether written or oral, relating to its subject matter. 23.2 Each party acknowledges that in entering into this Agreement it does not rely on, and shall have no remedies in respect of, any statement, representation, assurance or warranty (whether made innocently or negligently) that is not set out in this Agreement. 24. Assignment 24.1 You shall not, without our prior written consent, assign, transfer, charge, sub-contract or deal in any other manner with all or any of your rights or obligations under this Agreement. 24.2 We may at any time assign, transfer, charge, sub-contract or deal in any other manner with all or any of our rights or obligations under this Agreement. 25. No partnership or agency Nothing in this Agreement is intended to or shall operate to create a partnership between the parties, or authorise either party to act as agent for the other, and neither party shall have the authority to act in the name or on behalf of or otherwise to bind the other in any way (including, but not limited to, the making of any representation or warranty, the assumption of any obligation or liability and the exercise of any right or power). 26. Third party rights This Agreement does not confer any rights on any person or party (other than the parties to this Agreement and, where applicable, their successors and permitted assigns) pursuant to the Contracts (Rights of Third Parties) Act 1999. 27. Notices 27.1 Any notice required to be given under this Agreement shall be in writing and shall be delivered by hand or sent by pre-paid first-class post or recorded delivery post to the other party at its address set out in this Agreement, or such other address as may have been notified by that party for such purposes, or sent by email to the other party's last known and previously used email address for receiving correspondence under this Agreement. 27.2 A notice delivered by hand shall be deemed to have been received when delivered (or if delivery is not in business hours, at 9 am on the first business day following delivery). A correctly addressed notice sent by pre-paid first-class post or recorded delivery post shall be deemed to have been received at the time at which it would have been delivered in the normal course of post. A notice sent by email shall be deemed to have been received one Business Day after transmission. 28. Governing law This Agreement and any dispute or claim arising out of or in connection with it or its subject matter or formation (including non-contractual disputes or claims) shall be governed by and construed in accordance with the law of England and Wales. 29. Jurisdiction Each party irrevocably agrees that the courts of England and Wales shall have exclusive jurisdiction to settle any dispute or claim arising out of or in connection with this Agreement or its subject matter or formation (including non-contractual disputes or claims). --- ## Actions on an Optimized Version Learn how to work with your optimized code versions using the available actions in Artemis. ## Available Actions Once you have optimization results, you can perform several actions on any version. Access these by clicking the menu button (⋮) next to any version. ### Further Optimization ![Run Evaluations](./img/opt-evaluation.png) #### Evaluate - **Purpose**: Run additional performance evaluations on this version - **Configuration**: - **Benchmark Repetitions**: Set number of evaluation runs (e.g., 10 for better accuracy) - **Runner Selection**: Choose specific hardware (e.g., beast9runner) - **Different Hardware**: Test performance on different systems - **Use**: Get more accurate performance data or test on target deployment hardware - **Benefit**: Higher repetitions provide more reliable performance metrics #### Verify - **Purpose**: Run additional validation tests on this version - **Options**: - **More evaluations**: Run additional benchmarks for better accuracy - **Different hardware**: Test on different runner/hardware configuration - **Use**: Confirm performance consistency #### New Optimization - **Purpose**: Create another optimization using this version as the starting point - **Use**: Iterative improvement for even better performance - **Benefit**: Build upon successful optimizations ### Git Integration #### Create Changeset - **Purpose**: Generate a Git changeset for the optimization - **Use**: Apply changes to your existing Git repository - **Benefit**: Maintain version control history #### Push Commit - **Purpose**: Automatically commit optimized code to your repository - **Use**: Direct integration with your development workflow #### Create Pull Request - **Purpose**: Generate a pull request with the optimization - **Use**: Code review process before merging optimizations ### Download Actions #### Download Code - **Purpose**: Get the optimized source code files - **Use**: Implement the optimized version in your project - **Format**: Source code files ready for deployment ## Quick Action Guide ### To Deploy Your Code 1. **Download** → Get the optimized source files 2. Test in your development environment 3. Deploy to production ### To Continue Optimizing 1. **New Optimization** → Use current version as baseline 2. **Verify** → Test on different hardware or with more repetitions 3. Iterate until you reach desired performance ### To Integrate with Git 1. **Create Changeset** → Generate Git-compatible changes 2. **Push Commit** → Direct commit to repository 3. **Create Pull Request** → Initiate code review process ## Best Practices - **Always download and test** optimized code before production deployment - **Use verification** when deploying to different hardware than used for optimization - **Create changesets** to maintain proper version control history ## Tips - In our example Version 18 shows as "best" - this indicates the highest performing version - Green performance indicators show excellent results - Use "Verify" to test optimizations on your target deployment hardware - Multiple evaluations improve result accuracy but take more time --- ## Creating an Optimization Learn how to create and configure an optimization in Artemis to find the best-performing combination of your code versions. ## Navigating to a New Optimization Go to the top-level **Optimisations** tab. It lists all your optimizations — this is where you create new ones and manage existing runs. Click **New optimisation** in the top right to start. ![New optimisation from the Optimisations tab](./img/opt-3.png) --- ## Setting up the optimization The new-optimization page is a single screen: the **configuration** at the top, and the **code versions to combine** below. ![Optimization setup](./img/opt-step2.png) **Configuration** - **Optimisation name** — a descriptive name to find this optimization later. Leave blank for an auto-generated one. - **Benchmark repetitions** — how many times each version is re-run; results are averaged. Higher improves accuracy but takes longer (useful for small/fast benchmarks that are noise-prone). - **Runner** — your connected runner. Make sure it's set up first — see [Artemis Runner](../../features/artemis-runner.md). **Choose the versions to combine** - Keep the **Original** as a baseline. - Prioritise versions with green scores that passed validation. - Focus on the best performers to keep the run efficient. Click **Create Optimisation** to start. You'll return to the **Optimisations** tab, where the run first appears as **Pending** and then completes with a **best solution** summary on its card. --- ## Next Steps 1. [Review optimization results](./reviewing-results.md) 2. [Actions on optimized versions](./actions-on-versions.md) --- ## Code Optimization Overview Artemis provides a **powerful optimization engine** that helps you discover the most effective combinations of code versions to improve performance, memory usage, and CPU efficiency. While version generation produces multiple alternatives for a given target, **it is not obvious which one is the best** or how it fits in your larger codebase. With **optimization**, Artemis: * Uses a **genetic Algorithm** to combine your chosen versions * Validates them with **real execution metrics** (runtime, memory usage, CPU time, or any custom metric extracted from logs) * Presents the **top 3 best-performing combinations** * Lets you perform additional actions such as **git integration, repeated verification, or iterative optimizations** This ensures you not only generate alternatives but also identify the **best-fit, production-ready code**. ## Optimization Workflow ### [Creating an Optimization](creating-an-optimization.md) Set up and configure your optimization process: * Choose versions to include * Configure benchmark repetitions * Select runners for execution * Start the optimization process ### [Reviewing Optimization Results](reviewing-results.md) Analyze the optimization outcomes: * Review the **top 3 recommended combinations** * Compare performance across runtime, CPU, and memory metrics * Explore detailed insights per code target * Select the version that matches your performance goals ### [Actions on an Optimized Version](actions-on-versions.md) Take further actions once you’ve selected an optimized version: * Run additional evaluations or verifications * Create new optimizations starting from the current version * Generate Git changesets, commits, or pull requests * Download source code or generate detailed reports ## Next Steps After learning about optimization, you can: - [Explore use cases](/optimization/code-optimization/creating-an-optimization) --- ## Reviewing Optimization Results Learn how to read an optimization's results in Artemis and pick the best-performing combination of your code versions. ## Accessing Results From the **Optimisations** tab, click a finished optimization to open it. Its detail view has three tabs: **Versions**, **Metrics**, and **Insights**. ## Understanding the Results ### Performance summary Each optimization card shows its **best solution** at a glance — the runtime, CPU, and memory of the strongest combination versus your original code, along with the runner's hardware. ![Best solution summary](./img/opt-results.png) ### Versions The **Versions** tab lists every combination Artemis evaluated. ![Optimization versions](./img/opt-versions.png) - **Code Version** — each row is a version built from a combination of your selected changes (the `best` and `target` badges mark the winning and baseline versions). - **Targets Changed** — how many targets that version touches. - **Diff** — lines added / removed. - **Runtime, CPU Time, Memory Usage** — the measured result of each version, each shown with its **% change vs. the original** (green = better, red = worse). ### Metrics The **Metrics** tab compares every version across **all** of your metrics at once — runtime, CPU, memory, and any custom metrics (such as throughput) you extract from logs — each against the baseline. ![Metrics — data view](./img/opt-metrics.png) Switch to **Compare** to pick any two versions and view them side by side, with **mean comparison** and **run-distribution** charts per metric. ![Metrics — compare view](./img/opt-compare.png) ## Key Insights The **Insights** tab breaks the result down per code target. ![Potential code targets](./img/opt-insights.png) - **Location & Versions** — the targets, and the versions chosen for each. Optimization versions are combinations of these. - **Scores** — the per-target scores for each version. - **Importance (Runtime / CPU / Memory)** — how much each change contributes to each metric, so you can see what's actually driving the improvement. - **Weights & filters** — adjust the R / C / M weights, or filter to the **most important** targets, to reorder by what matters to you. ## Selecting the Best Version - **Speed-critical** → the version with the best **Runtime**. - **Memory-limited** → the version with the best **Memory**. - **Balanced** → the **best** combined version (marked in the Versions tab). ## Next Steps After reviewing results you can take [further actions on optimized versions](./actions-on-versions.md). --- ## Agent Targeting Agent Targeting is the default, agent-driven way to find optimisation targets. Instead of scanning every file yourself, you describe your goals to the built-in agent on the **Targets** page and it analyses your codebase to surface the highest-impact areas — then creates the targets for you. ## How it works ### 1. Describe your goals to the agent On the **Targets** page, the right-hand **Activity** panel hosts the agent. Type your optimisation goal in your own words, or pick one of the suggested default prompts to get started. ![Agent Targeting — describe your goals to the agent](./img/addtargets-1.png) ### 2. Review and create the suggested targets The agent analyses your codebase and returns a set of suggested targets — each with a file, line range, and a short rationale. Untick any you don't want, then click **Create** to add them to your **Targets** list. ![Agent Targeting — suggested targets](./img/suggested-targets.png) ### 3. Read the agent's reasoning Alongside the targets, the agent explains *why* it chose them — the performance domains it found, the hot paths involved, and what to measure. Use this to decide where to focus and what a good result should look like before generating versions. ![Agent Targeting — analysis and reasoning](./img/agent-explanation.png) Once the targets are in your list, click **Generate versions** on any target to start producing optimised variants. ## When to use it - You want a quick, high-signal starting point without a full file-by-file scan - You have a specific optimisation goal and want the agent to find the best targets for it - You're working with a large codebase and want to narrow down fast ## Next Steps After targets are created: 1. [Score your targets](scoring-original.md) to further prioritise 2. [Generate new code versions](../version-generation/overview.md) --- ## Chat with Agent Chat with Agent lets you have an open conversation with Artemis about your codebase. Before you commit to any targets — or let the agent change anything — you can ask questions and get answers, so you understand where the real opportunities are first. ## How it works In the **Build** tab, open the agent and switch to **Chat** mode. Chat is for exploring: you ask, Artemis answers, and nothing is changed until you decide to act (by moving to **Plan** or **Code**). ![Chat mode](./img/chat-with-agent-1.png) Type your question in your own words, or pick one of the default prompts — *Find Optimisation Targets*, *Caching Opportunities*, *Compilation Flag Optimisation*, and more — to get started quickly. Artemis reads the relevant code and replies with a detailed, grounded answer, citing the exact files and line ranges it's referring to. This is the same purpose it has always served: **check the codebase before doing anything**, so your next step is informed rather than a guess. ![Chat with Agent — ask and answer](./img/chat-with-agent-2.png) ## When to use it - You want to explore and understand your codebase before committing to a targeting approach - You have questions about specific performance issues and want the agent's input - You prefer a conversational, iterative workflow over an automated scan ## Next Steps Once you've pinned down the areas worth optimising: 1. [Score your targets](scoring-original.md) to prioritise them 2. [Generate new code versions](../version-generation/overview.md) --- ## File-by-file targeting Prefer to hand-pick exactly what Artemis works on? File-by-file targeting lets you browse your repository and turn specific files into optimisation targets yourself — no agent required. ## Browse the file explorer The left-hand **Files** panel lists every file in your repository, mirroring its folder structure. Expand folders to drill into the tree. ![Files explorer](./img/file-explorer-sidebar.png) In large codebases, use the **Search files** box at the top of the panel to jump straight to a file by name. ![Search files](./img/file-explorer-search.png) ## Add files as targets Hover over any file in the explorer and click the **+** (**Add target**) button that appears next to it. This opens the **Select files to target** dialog. ![Add target from the file explorer](./img/file-explorer-addtarget.png) ## Select files and generate targets The **Select files to target** dialog shows your full file tree on the left and a preview of the highlighted file's contents on the right — so you can confirm you're picking the right code before committing to it. Tick every file you want to target, across any folders, then click **Generate targets** to add them all to your **Targets** list in one go. ![Select files to target](./img/select-files-modal.png) :::note Accepted file formats Artemis only extracts targets from source files it can parse. Supported extensions include: | Language | File Extensions | |--------------|--------------------------------------------------------------------------------------------------------| | C++ | .cpp, .c, .h, .hpp, .cc, .hh, .cxx, .hxx, .c++, .h++, .cu, .cuh | | C | .c, .h | | Java | .java | | Python | .py | | Fortran | .f, .for, .f90, .f95, .f03, .f08, .F, .F90 | | JavaScript | .js, .jsx | | TypeScript | .ts, .tsx | | Ruby | .rb | | PHP | .php | | C# | .cs | | Go | .go | | Swift | .swift | | Kotlin | .kt, .kts | | Scala | .scala | | Rust | .rs | | Dart | .dart | | R | .r, .R | | Lua | .lua | | Perl | .pl, .pm | | SQL | .sql | | Q | .q | | COBOL | .cob, .cbl, .cpy | | OCaml | .ml | | Elixir | .ex | | Text | .txt, .md, .html, .css, .scss, .vue, .xml, .json, .yaml, .yml, .ini, .log, .conf, .cfg, .tsv, .rst, .tex, .bat, .sh, .pl, .toml, .properties, .gradle, .maven, .cmd, .awk, .env, .helm, .tpl, .kubeconfig, .npmrc, .prettierrc, .eslintrc, .babelrc, .terraformrc, .tfvars, .tf, .editorconfig, .gitignore, .gitconfig, .zshrc, .bashrc, .profile, .flake8, .pylintrc, .coveragerc, .drl, .m, .jl, .vba, .bas, .cls, .frm | | Unsupported | .csv | ::: ## Next steps Once your targets appear in the **Targets** list: 1. [Score your targets](scoring-original.md) to prioritise where to focus 2. [Generate new code versions](../version-generation/overview.md) --- ## Code Targeting Overview Artemis can work with codebases of any size, from small projects to large enterprise applications. Code targeting lets you extract a focused subset of your codebase so Artemis works on the most impactful areas — reducing processing time and keeping AI context tight and relevant. --- ## Navigating to Code Targeting ### Step 1: Go to the Optimise tab From your project, click the **Optimise** tab in the top navigation. ![Navigate to Optimise](./img/navigate-to-optimise.png) ### Step 2: Describe your goals to the agent You'll land on the **Targets** page. The right-hand panel has a built-in chat agent — describe your optimisation goals in your own words, or pick one of the default prompts, and it will analyse your codebase to find the highest-impact areas. ![Targets page — describe your goals to the agent](./img/addtargets-1.png) ### Step 3: Review and create the suggested targets The agent returns a set of suggested targets, each with a file, line range, and a short rationale. Review the selection — untick any you don't want — then click **Create** to add them to your **Targets** list. ![Agent-suggested targets](./img/suggested-targets.png) --- ## Targeting Methods ### File-by-File Targeting *(Thorough)* Scans each file in your codebase individually. Apply filters to extract specific code targets. Best for comprehensive coverage when you want full visibility across the entire project. - Processes each file sequentially - Filter by criteria (size, complexity, content patterns) - Extract targets with full coverage [Learn more →](file-by-file.md) --- ### Agent Targeting *(Fast)* Uses an AI agent to analyse your code and identify the highest-impact areas for optimisation. Provides quick results by focusing on high-value sections rather than scanning everything. - Agent-based codebase analysis - Priority results based on impact - Focused approach with quick insights [Learn more →](agent-targeting.md) --- ### Chat with Agent *(Interactive)* Have a conversational session with an AI agent about your codebase. Ask questions, explore optimisation opportunities, and get guidance on where to focus — then extract targets directly from the conversation. - Ask questions about your codebase - Set optimisation goals through dialogue - Explore optimisation opportunities interactively [Learn more →](chat-with-agent.md) --- ## Browsing Your Targets Once targets and versions have been generated, the top of the Targets page gives you an overview of your exploration space. ![Targets page — Explore code variants](./img/optimise-tab-view.png) **Explore code variants** — Browse single-file variants generated by Artemis. Each target shows the original alongside one or more improved versions. Compare them in a diff view and apply the changes you want. This is your exploration phase: see what's possible across your codebase. ### Two ways to browse Switch between views any time from the toolbar: - **Table** — compact spreadsheet layout for scanning many targets at once. - **List** — card-based layout that surfaces metrics, scores, and version diffs inline. ![Targets page — List view](./img/target-list-view.png) ### What's next from here? - **Ready to evolve the best combination?** → [Create an Optimisation](../code-optimization/creating-an-optimization.md) — combine your strongest versions and find the best overall result. - **Want full autonomous multi-file evolution?** → [Discover](../discover/overview.md) — let Artemis autonomously explore and evolve changes across multiple files. --- ## Next Steps After identifying your targets: 1. [Score your targets](scoring-original.md) to prioritise where to focus 2. [Generate new code versions](../version-generation/overview.md) 3. [Validate the results](../code-validation/code-validation-overview.md) --- ## Score your targets After analyzing your codebase and extracting targets, the next step is to **score** them. Scoring helps you understand which parts of your code would benefit most from optimization or improvement. --- ### Step 1: Open scoring options There are two ways to start scoring a target: - **Table view** — the balance icon (scale icon) appears next to each target. Click it to begin scoring. - **List view** — click **Actions** on a target card, then select **Score targets**. ![Targets with scoring icons](./img/scoring-1.png) ![Score targets from list view](./img/list-scoretarget.png) --- ### Step 2: Choose scoring method You’ll see a list of available LLMs and criteria. Select either: * **LLM** → One result per score per LLM. Cheapest, fastest. * **Agent** → Adds advanced context awareness, refining results per LLM. More expensive. ![Scoring options](./img/score-method.png) :::warning Be mindful of LLM costs Some models incur costs. Always check the **Estimated Cost** at the bottom of the panel before starting a scoring task. ::: ### Step 3: Define criteria You can either: * **Use built-in metrics** (e.g. Optimisation, Quality, Security, Stability). * **Define your own**: - Click `Define new` to open the **Define your own score** dialog. - Enter a **Prompt Name**. - In **Prompt Text**, describe your scoring criteria in natural language — for example, *"How well does the code scale as the size of the input grows?"* - Click **Create**. ![Define your own score](./img/custom-metric.png) Custom prompts are marked with a **human figure outline icon**. ### step 4: Choose model(s) Select one or more models to apply. ### Step 4: Run the scoring * Click `Score` to start evaluation. * When complete, results will appear under the **Scores** tab. ### Understanding the results Artemis provides several default scores: | Score | Meaning | | ----------------- | ---------------------------------------------------------------- | | **Optimisation** | How optimized the code is. | | **Quality** | Broader measure of code health and inefficiencies. | | **Security** | Checks for security issues. | | **Stability** | Identifies potential bugs or failure points. | | **Average Score** | Average across criteria (and across LLMs if multiple were used). | Click on any score tile for details on *why* a specific score was assigned. Low scores indicate areas worth reworking. Once identified, you can move to [Generate code versions](../version-generation/overview.md) to apply improvements. --- ## Semantic Search Semantic Search is a method for extracting targets by finding similar patterns and potential duplicates across your repository. It uses embeddings to understand the meaning of code rather than just matching text. ### What It Does? - Finds semantically similar code (even if variable names differ). - Detects duplicates and near-duplicates. - Supports pattern matching and code similarity checks. When you click on `Semantic Search`, the following page will appear: ![semantic search](./img/semantic-.png) Enter a code pattern or keyword in the input box and click `Search`. Artemis will detect and return the most relevant targets matching your query. ### Example Suppose you want to find functions in your codebase that **look like a generic function definition**. You can follow these steps: ![semantic 1](./img/semantic-1.png) ![semantic 2](./img/semantic-2.png) ## Next steps: - Evaluate target quality using Artemis scoring. See [Code Scoring](optimization\code-validation\code-evaluation-with-scoring.md). - Index your code for better context-aware suggestions. See [Code Indexing](/features/code-indexing.md). --- ## Code Scoring You can generate **new scores** for different versions of a target. This allows you to compare each version against the original and make better decisions. Scores can be produced using LLMs or Agents, following the same process you used when scoring your original code (see [Score your targets](../code-targeting/scoring-original.md)). To start, go to the `Targets` section of your project and select the **New Score** option. You can either use the built-in scoring criteria or define your own custom rules. :::note If you generated target versions using **Artemis Intelligence**, scores are automatically created. ::: :::note Make sure your original code has been scored first. If not, new scores cannot be generated. ::: #### If you haven't scored your original code yet, see [Score your targets](../code-targeting/scoring-original.md). --- ### Steps to generate new scores **Step 1 :** Select the **New Score** button. ![new score 1](./img/comparison-score-1.png) **Step 2 :** Configure your scoring options: - Choose between **LLM** or **Agent**. - Use built-in scoring criteria or define your own. - Select the model(s) to use. ![new score 2](./img/comparison-score-2.png) **Step 3 :** Click `Score`. **Step 4 :** View your new scores in the results. ![new score results](./img/comparison-score-4.png) --- ## Code Validation Overview After generating alternative code versions for your targets, Artemis provides tools to help you decide which versions are best to integrate into your project. This stage ensures that quality, correctness, and performance are thoroughly assessed before merging. ![Validation status](./img/evaluation-overview.png) ## Validation Areas Code validation in Artemis consists of two main areas: ### 1.Evaluate New Versions Run structured checks to measure quality and reliability. - **[Scoring](./code-evaluation-with-scoring.md)**: Assess code quality against defined criteria such as maintainability, readability, or complexity. - **[Validation](./validation-and-performance-metrics.md)**: Execute the code to test correctness, performance, and reliability. #### Ensure your build environment is configured, see [Project Settings](../../project-setup/settings/runner-and-scripts.md) if not already set up. ### 2.[Review and Compare](./review-and-compare-new-versions.md) Explore generated versions side-by-side with the original. Inspect logs, analyze detailed scores, and take informed actions on each version. By combining **structured evaluation (scoring + validation)** with **interactive review and comparison**, you gain a complete picture of each version’s quality and impact. ## Next Steps - [Learn about Code Optimization](../code-optimization/overview.md) --- ## Review and Compare After Artemis generates optimized versions of your targets, you can **review and compare** them using several built-in tools. --- Navigate to the `Targets` tab to explore all generated code variations. Click on any `version` to open its details and access the following features: * ### **Side-by-side comparison** with the original code. * ### **Artemis Chat**: ask questions or request clarifications about how or why a version was produced. ![Version target details](./img/chat.png) * ### **Log filtering**: quickly narrow down relevant outputs. *(Execution logs are available only when you validate a version or run it internally with Artemis Intelligence.)* Search the output or filter by status (Info, Debug, Warn, Error) to focus on what matters. ![Filter logs](./img/logs.png) Every log for the version is listed in the **Logs** panel — click any entry to open it. ![Logs list](./img/logs-list.png) * ### **Performance & score data**: compare every version's measured results side by side. Open the **Data** tab to see all versions against the `baseline` — each cell shows the value and its **% change**. ![Version data and Create PR](./img/version-data.png) - **Runtime / CPU / Memory** — measured execution time, CPU time and peak memory (lower is better). - **XXH128 / XXH32 / XXH3 64b / XXH64 MBps** — your custom throughput metrics, one per algorithm (higher is better). - **Clarity / Hot-path** — quality scores for the version (higher is better). Once you've chosen the best version, use **Create PR** to package it — **Create Changeset** to combine versions across targets, or **Create PR** to open a pull request directly. See [Changesets](../../features/changeset.md) for the full flow. ### Next steps: - You can start [making optimization](../code-optimization/overview.md). - You can make a [changeset](../../features/changeset.md) with your desired combination of versions. --- ## Validate New Versions Validation ensures that generated versions not only **look correct** but also **function as intended**. Artemis provides three main validation options: * **Compile**: checks if the code builds successfully * **Test**: runs unit tests to verify functionality * **Benchmark**: measures runtime and performance In addition, Artemis tracks performance metrics such as **runtime**, **CPU time**, and **memory usage**, providing deeper insight into efficiency. :::note Performance metrics explained * **Runtime** → total execution time of the benchmark * **Memory usage** → unique set size, memory exclusively used by the process.(USS) * **CPU time** → actual CPU processing time consumed ::: Want to track domain-specific measurements too — throughput, accuracy, error rate? See [Custom Metrics](../../features/custom-metrics.md) to add your own alongside these built-in ones. #### If you haven’t set up your project’s build settings yet, see [Project Settings](../../project-setup/settings/runner-and-scripts.md). ## How to Validate ### **Step 1: Select target(s)** You can validate all targets at once or validate each target individually. Click the **triangle button** next to a version to start. ![validate 2 ](./img/validation-1.png) ### **Step 2: Configure validation** * Choose one or more options: *compile, test, benchmark* * Select your preferred online runner * (Optional) Enable **Compare with Original**: reruns the original code and update value of metrics. * Rhen click on `run` ![validate 1 ](./img/validate-1.png) ### **Step 3: view results** * View **performance metrics** (runtime, CPU, memory) * Access **execution logs** for detailed insights Each version has a **Checks** column showing the status of its **Compile**, **Test**, and **Benchmark** runs. Click a check to open its log in the **Activity** panel, where you can read the full output, **search** it, and **filter by status**. When a check shows **Failed**, open its log to see exactly *why* — for example, a compile error in a generated version — so you can decide whether to discard that version or adjust your target. ![Watch a check's logs, including failed runs](./img/check-logs.png) --- ## Experiments An **Experiment** is the main unit of Discovery — a distinct approach the agent tries against your objective, each carrying a **confidence score**. The **Experiments board is the default view**, organising every experiment by its **lifecycle status**. ## The board ![Experiments board — Draft and Queued columns](./img/discover-experiments-queue.png) Experiments move left to right through these statuses: - **Draft** — proposed but not yet accepted. **Queue** it to accept, or **Dismiss** it. - **Queued** — accepted and waiting to run. - **In Progress** — currently being generated and validated on your runner. - **Concluded** — finished, and marked **Validated**, **Refuted**, or **Inconclusive** once its versions are scored. - **Dismissed** — discarded. ![Experiments progressing into In Progress and Concluded / Validated](./img/discover-experiments-lifecycle.png) You can **drag** cards between columns, **bulk-select and combine** experiments, and add your own with **New**. When at least one experiment is queued, click **Resume** to continue the run. ![The Ready-to-resume banner with the Resume button highlighted](./img/discover-experiments-resume.png) Once at least one experiment is queued, the banner switches to **Ready to resume**. Click **Resume** and the agent picks up the queued experiments, generates and validates their **Versions** on your runner, and scores them against your [Goals](./goals.md). In **Manual approval mode** it then pauses again for your next round of approvals; with Manual approval off, it keeps going automatically until the run completes. Each concluded experiment links to the [Versions](./versions.md) it produced. --- ## Goals **Goals** are the fitness criteria every version is scored against — they define what "better" means for your run. Each goal has a **direction** (Maximise or Minimise) and a **weight**; the weights sum to **1.00** and determine how much each metric counts toward a version's overall score. ![The Goals table — metrics, type, direction, and weights](./img/discover-goals.png) ## Metric types - **Worker** metrics are **measured on your runner** — the built-in runtime, CPU, and memory, plus any **custom benchmark metrics** your benchmark records (e.g. `XXH32_MBps`, `XXH64_MBps`). See [Benchmarks](../../project-setup/settings/benchmarks.md) for how these are produced. - **LLM** metrics are **judged by the review panel** — qualitative criteria the reviewer models score, such as `seed_option_malformed_input_robustness`, `hash_output_compatibility`, `cli_regression_coverage_depth`, and `fix_scope_and_maintainability`. ## Direction and weights - **Maximise / Minimise** sets which way is "better" for each metric. - The **weight** column sets each metric's importance. In this run the primary goal — robust handling of a malformed `--seed` operand — is weighted **0.60**, so it dominates scoring, while the performance metrics are kept small as non-regression guardrails. - Weights must total **1.00** — use **Normalise** to rescale them, then **Save & recompute** to re-score every version against the updated goals. You can **pin** goals and tune weights at any point during a run; recomputing re-ranks the versions — and the **★ BEST** pick — accordingly. --- ## Graph The **Graph** is the main view of a Discovery run — a visual map that grows from your objective into the experiments the agent tries and the versions they produce. Use the **Compact / Full** toggle to switch between a stacked list of cards and the full branching tree, and **New** to add an experiment of your own. ## Reviewing and steering drafts The agent proposes **draft experiments**, each with a confidence score. **Recommended drafts are highlighted.** For each draft you can: - **Queue** — accept it so the agent will work on it - **Dismiss** — discard it ![Draft experiments in the Graph, each with Queue and Dismiss](./img/discover-graph-drafts.png) :::note Manual approval vs. automatic This step-by-step review happens because **Manual approval mode** is on — the run pauses (*"Awaiting your approval"*) and waits for you to **Queue** at least one draft and click **Resume**. Turn Manual approval mode **off** and the agent queues and proceeds through experiments **automatically**, without pausing for you. ::: ## Nodes The tree is built from three node types: - **Objective** — the goal you typed in; it anchors the graph. - **Experiment** (`EXP-…`) — a distinct approach, with a confidence score. - **Version** (`v1`, `v2`, …) — the actual code diff an experiment produced, with a **fitness delta** vs. baseline (e.g. `+0.53`). Click any node to open its detail panel. On a **version** node, two actions let you keep exploring: ![Version node actions: Generate variations and Combine](./img/discover-graph-actions.png) - **Generate variations from here** (the **+** icon) — branch new experiments off this version. - **Combine with another node** (the merge icon) — merge this version with another to blend their changes. Every queued experiment runs your **Run config** (build, test, benchmark) against each version, so versions arrive already scored. --- ## Discover **Autonomous multi-file evolution** Describe a goal and the agent runs the full cycle autonomously, building **Experiments**, generating multi-file **Versions**, and carrying the best results forward. Need per-file diff exploration? [Targets](../code-targeting/overview.md) · Need to combine specific changes? [Optimise](../code-optimization/creating-an-optimization.md) ## 2. Planning ## 2.1. Planning - Requirements Gathering Regardless of whether you're a junior data scientist or a seasoned ML engineer, our planning agent provides valuable guidance when given any objective, as an instance: "Expand this email classification project".