Skip to content
CAI
Software that uses CAICheck a score

stitionai/devika

35.2

Weak · 19 September 2026

3k

lines of production code

Python

with JavaScript

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

Devika is an agentic AI software engineer that automates the full software development lifecycle, including planning, coding, debugging, and deployment. It orchestrates a modular system of specialized sub-agents to research, generate, and fix code while leveraging browser automation and web search for context. The platform provides a SvelteKit-based interface for real-time monitoring of agent state, code editing, and terminal interaction, backed by a flexible architecture supporting multiple LLM providers and persistent project management.

Features

Add project management API endpoints

A new API blueprint for project management has been added, providing endpoints to create, delete, list files, and download projects (as ZIP or PDF). All user-supplied project names are sanitized using secure\_filename to prevent path traversal, and the PDF download endpoint explicitly sets the correct Content-Type header.

src/apis · high confidence

Initial implementation of core project modules

This release introduces the foundational components for the application, including a code reading utility that converts project directories into markdown, a SQLite-backed knowledge base for storing and retrieving tagged content, and a PDF generation service that converts markdown to PDF files. It also adds a sentence processing class for keyword extraction and establishes placeholder structures for domain-specific expert modules (such as chemistry, math, and medical) and sandboxing capabilities.

(repo-wide) · high confidence

Initial release of Devika AI software engineer

This commit introduces the initial version of Devika, an agentic AI software engineer capable of planning, researching, and writing code. The release includes the core Python backend (devika.py) with Flask and Socket.IO integration, a Svelte-based frontend (ui/), and Docker support (docker-compose.yaml, app.dockerfile, devika.dockerfile) for easy deployment. It features configuration via config.toml, support for multiple LLM providers (OpenAI, Claude, Gemini, Ollama), web search capabilities (Bing, Google, DuckDuckGo), and browser automation via Playwright. Documentation includes README.md, ARCHITECTURE.md, CONTRIBUTING.md, and ROADMAP.md.

(repo-wide) · high confidence

Introduce service layer and LLM response resilience

This change introduces a new service layer in src/services containing Git, GitHub, and Netlify integrations for repository management, repository listing, and deployment. It also adds utility functions to handle LLM interactions: a retry wrapper that attempts up to five times on invalid responses, and a response parser that robustly extracts JSON from model outputs using multiple fallback strategies (direct parsing, code block extraction, substring search, and line-by-line parsing).

src/services · high confidence

Introduce unified LLM provider abstraction with support for Claude, Gemini, Groq, Mistral, LM Studio, and Ollama

The application now features a centralized LLM module that standardizes interactions with multiple AI providers. Users can select from a broader range of models including Claude 3 (Opus, Sonnet, Haiku), Google Gemini (1.0 Pro, 1.5 Flash, 1.5 Pro), Mistral variants, and Groq-hosted models (Llama 3, Mixtral, Gemma). The update also adds support for local inference via Ollama and LM Studio, while retaining existing OpenAI capabilities with configurable custom API endpoints. A unified interface handles inference, token usage tracking, and timeout management across all supported providers.

src/llm · high confidence

Introduction of modular agent architecture with specialized sub-agents

The agent system has been restructured into a modular architecture, introducing specialized sub-agents for distinct tasks: Planner (step-by-step planning), Researcher (web search query generation), Coder (code generation and saving), Patcher (error-driven code fixing), Feature (new feature implementation), Action (user intent classification for run/deploy/feature/bug/report), Answer (context-aware Q&A), Reporter (PDF report generation), Runner (command execution), Decision (routing user requests to appropriate workflows), InternalMonologue (internal reasoning display), and Formatter (text cleaning). The main Agent class now orchestrates these components, enabling more structured and maintainable AI-driven software engineering workflows.

src/agents · high confidence

New Logs page with split request and socket views

A new Logs page has been added to the application, displaying the last 100 log entries split into two columns: 'Request logs' and 'Socket logs'. The page fetches logs via the \fetchLogs\ API on mount and applies color coding to highlight different severity levels (ERROR, WARNING, INFO, DEBUG) for better readability.

ui/src/routes/logs · high confidence

New UI components and layout structure

The application introduces a comprehensive set of new UI components in the \ui/src/lib/components\ directory, including \BrowserWidget\, \ControlPanel\, \EditorWidget\, \MessageContainer\, \MessageInput\, \Sidebar\, and \TerminalWidget\. These components form the core layout and interaction layer, featuring a new sidebar navigation, a control panel for project and model selection, a chat interface with message history, a code editor powered by Monaco, and a terminal view using xterm. Additionally, a suite of reusable UI primitives (resizable panes, select menus, tabs, and toasts) is added to support these features.

ui/src/lib/components · high confidence

New browser automation and search capabilities

This change introduces a new browser module in \src/browser\ that enables the agent to automate web interactions and perform searches. The \Browser\ class uses Playwright to navigate pages, take screenshots, and extract content (HTML, Markdown, PDF, text), while the \Crawler\ class in \interaction.py\ provides a prompt-based interface for controlling the browser to achieve specific objectives. Additionally, \search.py\ adds support for web searches via Bing, Google, and DuckDuckGo, allowing the agent to find and navigate to relevant URLs.

src/browser · high confidence

New settings page with API key, endpoint, and configuration management

A new settings page has been added to the application, allowing users to manage API keys, API endpoints, and general configuration. The page features a tabbed interface for organizing settings into API Keys, API Endpoints, Config, and Appearance sections. Users can view their current settings and toggle an edit mode to modify values, with changes saved via an API call. The page also handles theme selection (Light, Dark, System) and resize options, persisting these preferences in local storage.

ui/src/routes/settings · high confidence

Behavioural changes

Migrated UI to SvelteKit with Tailwind CSS and shadcn-svelte

The user interface has been rebuilt on SvelteKit, replacing the previous Svelte setup. This migration introduces a new configuration structure including Vite, Tailwind CSS, and shadcn-svelte for component styling. Users will now interact with the application running on the new SvelteKit framework, which serves the UI on port 3000 during development.

ui · high confidence

Migrated UI to SvelteKit with new architecture and styling

The user interface has been migrated from standard Svelte to SvelteKit, introducing a new application shell (app.html) and a comprehensive Tailwind CSS theme (app.pcss) that defines light and dark mode variables for components like browsers and terminals. This change includes a complete rewrite of the frontend logic: a new API client (api.js) handles HTTP requests and auto-detects the backend host, a dedicated socket manager (sockets.js) handles real-time agent state and toast notifications, and a new store (store.js) manages application state with local storage persistence. Additionally, the UI now integrates the Tiktoken library (token.js) to calculate token usage and provides a shared icon set (icons.js) and animation utilities (utils.js).

ui/src/lib · high confidence

New UI layout with client-side rendering and integrated widgets

The application now uses a new UI structure based on SvelteKit, where the root layout is rendered exclusively on the client side (ssr = false). This layout wraps the application with a sidebar, theme watcher, and toast notifications. The main page initializes socket connections and checks server status on mount, then displays a flexible interface containing the Control Panel, Message Container, Message Input, Browser Widget, Terminal Widget, and Editor Widget.

ui/src/routes · high confidence

New centralized configuration, project management, and agent state persistence

The application now uses a new singleton-based configuration system in \src/config.py\ that manages API keys and endpoints for services including Google Search, Ollama, LM Studio, and Groq, while also introducing toggleable logging for REST API routes and prompts. Project history is now persisted in SQLite via \src/project.py\, allowing users to create, delete, and retrieve message threads for each project. Additionally, \src/state.py\ introduces persistent agent state tracking (including step count, internal monologue, and token usage) that is emitted to the frontend via Socket.IO, providing real-time visibility into the agent's progress and resource consumption.

src · high confidence

Dependencies

Initial dependency manifests for Python backend and SvelteKit frontend

This change introduces the initial dependency definitions for the project. The Python backend (requirements.txt) now includes libraries for web serving (Flask, Flask-SocketIO, eventlet, gevent), AI model integration (OpenAI, Anthropic, Google Generative AI, Ollama, Groq, Mistral, LlamaCpp via curl\_cffi), document processing (PDF, Markdown), and utilities (tiktoken, urllib3). The frontend (ui/package.json) establishes a SvelteKit application using Vite, Tailwind CSS, and includes dependencies for code editing (Monaco Editor), terminal emulation (xterm), and real-time communication (Socket.IO).

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Baseline

  • First survey — no prior run to compare against. CAI 35.

Lenses

  • Code Health 46
  • Architecture 96
  • Maturity 57
  • Readiness 9
  • Security 86
  • Accessibility 70

Changes since last survey

  • 186 commits — 140 feature/other, 46 fixes

By area

  • (root) — 71 commits
  • (repo) — 37 commits
  • ui/src — 31 commits
  • src/llm — 17 commits
  • src/agents — 14 commits
  • src/config.py — 6 commits
  • .github/ISSUE_TEMPLATE — 2 commits
  • src/logger.py — 2 commits
  • docs/Installation — 1 commit
  • src/browser — 1 commit
  • src/state.py — 1 commit
  • ui/.DS_Store — 1 commit
  • ui/package-lock.json — 1 commit
  • ui/public — 1 commit

Notable commits

  • fix: Fix - Groq class
  • fix: Fix - model_id
  • fix: Fix - recursive rendering
  • fix: Fix AgentState call for fetching the token usage
  • fix: Fix list index out of range error (https://github.com/stitionai/devika/issues/546) (#548)
  • fix: Fix: Sanitizing HTML inputs and Cors misconfiguration
  • fix: Fix: gemini and setting route
  • fix: Fix: io.UnsupportedOperation: not readable (#489)
  • fix: Fix: no response from devika
  • fix: Fix: none link and remove api from log (#452)
  • fix: Fix: setting page loading issue, messages from user (#359)
  • fix: Fixed - token usage in UI & logs
  • fix: Fixed config.py - Added singleton pattern to Config class
  • fix: Fixed failing to start without Ollama
  • fix: Fixes multiple issues from #37 around the control panel when using --host
  • fix: Improve and Fix: response parser, invalid response and others (#522)
  • fix: Merge pull request #166 from rajakumar05032000/fix/config.py
  • fix: Merge pull request #176 from cyanheads/fix-host
  • fix: Merge pull request #190 from rajakumar05032000/fix/model_id
  • fix: Merge pull request #193 from rajakumar05032000/fix/groq-client.py
  • …and 166 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

stitionai/devika was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 19 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 80bb343cbe4a4e5f5a0ba08d2524920139baceb6 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-13a154b7f5d1.