Skip to content

shub39/Kovert

Repository files navigation

Kovert

Kovert is an AI-powered social engineering game built with Kotlin Multiplatform. The game challenges you to uncover a secret by interacting with an AI agent powered by Ollama. You'll need to use your wits and social engineering skills to extract the information you need. available for Android and Desktop(JVM)

Demo

untitled.mp4

The AI Agent will try to prevent you from discovering the secret by manipulating the UI through tool calls it can

  • Change the theme of the chat depending on how it feels
  • Show a snackBar with it's thought process
  • Blur sensitive questions asked by the player

Architecture

The project follows a modern, clean architecture pattern, with a focus on separation of concerns and a modular design. The core logic is shared between Android and Desktop platforms.

graph TD
    subgraph "Platform Specific Modules"
        subgraph "Android App"
            AndroidApp
        end
        subgraph "Desktop App"
            DesktopApp
        end
    end

    subgraph "Presentation Layer"
        subgraph "Core Module"
            App
            ChatScreen
            MainMenu
        end
    end

    subgraph "Domain & Business Logic Layer"
        ChatScreenViewModel --> ChatAgentHandler
        MainMenuViewModel --> ChatAgentHandler
        MainMenuViewModel <--> MysteryDataRepo
        ChatScreenViewModel --> MysteryFactory
    end

    subgraph "Data Layer"
        MysteryDataDao <--> MysteryDataRepo
        MainMenuViewModel <-- "Saved Ollama Url" --> KovertDatastore
        MysteryDataDao <-- "Room" --> Database[(Local Database)]
        MysteryFactory <-- "Koog" --> OllamaAPI[(Ollama REST API)]
        KovertDatastore <-- "DataStore" --> DataStore[(Datastore)]
    end

    ChatScreen-->App
    MainMenu-->App
    App-->AndroidApp
    App-->DesktopApp

    ChatScreen <-- interacts with --> ChatScreenViewModel
    MainMenu <-- interacts with --> MainMenuViewModel
Loading

Built With

Kovert is built with the help of these amazing open-source libraries:

How to Run

1. Prerequisites

  • Android Studio: It is recommended to use the latest nightly version.
  • Ollama Server: You'll need an Ollama server running. Follow the official installation instructions.

2. Ollama Model

Pull the required AI model. This project has been configured with llama3:3b.

ollama pull llama3:3b

3. Running the App

Android

  1. Import the project into Android Studio.
  2. Select the androidApp run configuration.
  3. Run it on an emulator or a physical device.

Desktop

You can run the desktop app from the command line:

./gradlew :desktopApp:run

4. Configuration

When you first launch the app (on either Android or Desktop), you will be prompted to enter the URL of your Ollama server (e.g., http://localhost:11434).

About

🔍️ A social engineering mystery game made with KMP

Resources

License

Stars

Watchers

Forks

Languages