Pulse · IDEIn developmentOpen source, free forever

An IDE With a Pulse.
Free Forever.

Pulse is Avlory's IDE: open source under Apache 2.0 and free forever. A Rust engine does the heavy work inside a Flutter shell, with deep support for the languages and frameworks people use, a map of your codebase one key away, and no AI unless you plug it in. Every demo below runs in your browser; the screens are from Pulse itself, and every number says how it was measured.

  • Windows
  • Linux
  • macOS
  • iOS
  • Android
All planned. Downloads open through the waitlist.
01 · Edit

Quick at any size. Fixes that apply.

Typing, highlighting, search and saving run in Pulse's Rust engine; language servers bring the diagnostics and quick fixes, and Pulse shows them in place. The four mistakes below are the ones Pulse's real-tool tests make on purpose. Pick a language, then apply the server's fix or type your own.

src/main.rsRust

Type in the editor; the problem is checked again when you pause. Tab indents; Esc, then Tab, leaves the editor. A few lines of JavaScript stand in for the language server here; the messages and fixes are the real servers'.

Language
Problems

    0.81 msa keystroke to new highlights, 1,000-line file, median (95th percentile 1.15 ms)
    0.49 msthe same in a 100,000-line file (95th percentile 2.39 ms)
    51 msa cold start to the first highlighted screen of a 100,000-line file
    115 msto the first screen of a 50 MB minified file on one line

    Measured 27 and 28 October 2026 on a shared Linux build machine with 4 cores and no graphics card, release build: the engine's own work through the methods the app calls (the cold start on the idle machine, median of nine fresh processes). Drawing isn't in these numbers: the GPU editor surface isn't built yet, and until it is, Flutter draws the code. pulse bench

    Never loses work

    First build

    Unsaved edits go to a crash journal. A test kills Pulse mid-edit and checks every edit is offered back on the next start.

    Format on save

    First build

    With the project's own formatter and config: rustfmt, dart format, google-java-format, Prettier, ruff or black.

    Restricted mode

    First build

    A folder you haven't trusted runs no formatter, project language server, task, deploy or AI.

    Big files

    First build

    A 1 GB log shows its first screen in 2.2 s on the same machine; files over 512 KB highlight at once while the full parse finishes.

    Pulse's editor in the Phosphor theme: rating_card.dart open with a completion list for score and its documentation, an inline blame note, an unused-import warning on line 1, the file tree and a terminal, and the trace along the bottom with readouts for problems, tests, saving, the language server, the map, the line of work, the cursor and the look.
    The editor in Phosphor, from Pulse's screen tests. A stand-in engine answers in those tests, so the project and names are examples.
    02 · Find

    Find anything by any part of it.

    Go to file matches any part of a path, and Sprout's short paths work too: pulse/skip finds the map's skip rules. Type > for commands and @ for symbols. Try it on a slice of Avlory's own repository.

    Go to a file> commands, @ symbols
      Try

      Up and Down move, Enter opens. Matched letters are drawn in the accent, as Pulse does.

      Paths and symbols from Avlory's repository; the commands are Pulse's own names.

      22 msgo to file across 11,747 files, median of 20 queries
      174 msa project search for a common word, to the first 10,000 matches
      27 msgo to symbol, median of 24 queries over an 11,818-file index
      384 msopening the repository until its file list is ready

      Measured 27 and 28 October 2026 on the same 4-core machine, on a copy of Avlory's repository, with another build running. For scale, ripgrep alone finds every match of the same word there in 0.32 s. pulse bench --project <copy> --word return

      Pulse's Go to a file box over the editor: the query rcard matches rating_card_test.dart, rating_card.dart and ratings_repository.dart with the matched letters highlighted, and a hint that a greater-than sign searches commands and an at sign searches symbols.
      Go to a file, from Pulse's screen tests (example project).
      03 · The map

      Your codebase as a map, one key away.

      Pulse indexes modules, files, symbols and notes, and marks every link as read from the code or inferred, so you know which ones to check. Alt+M opens it in every keymap. A folder holding many projects, like Avlory's own, keeps each project's language servers, runs and problems apart. Open a project, then pick a file to see its links.

      The map of the picked file and the files it links to.

      Read from the code Inferred, check it

      Folder

        An example slice with its links drawn by hand, not Pulse's index.

        17 sthe symbol index of Avlory's repository from nothing (11,818 files walked), down from 43 s
        114 MBits database, down from 1,075 MB
        45 msone saved file brought up to date, down from 3 s
        0.09 msfind references, median of 24 symbols

        Measured 28 October 2026 on the same shared 4-core machine (load average 2 to 4), release build, through the map's own methods in a fresh process, two runs each. Generated, minified and vendored files and lockfiles are left out by default; with everything in, the index takes 27 s. Methods: Map::build, symbol_search, who_uses, update_file

        Pulse's map view in Phosphor: the project's files as sheets linked from main through screens, providers and services to models and the theme, solid links read from the code, dashed inferred links, dotted links from two notes, a legend, and rating_card.dart previewed with its lines, heat and problems.
        The map, from Pulse's screen tests (example project).
        04 · Languages

        Depth per language, tested check by check.

        Language servers give Pulse its breadth; its own layer on their types and the map gives depth. For each language a parity suite scripts what the matching JetBrains IDE does and checks that Pulse does it too. For Spring Data, Pulse reads a repository method's name the way Spring does and shows the query it becomes. Type one.

        interface UserRepository extends JpaRepository<User, Long>
        Entity
        Try

        The rules and the query text follow Pulse's own (springdata.rs), cut down to this one entity.

        SuiteChecksMirrorsOn
        Java and Spring Boot38 of 38 passIntelliJ IDEA UltimateSpring Boot with JPA, Flyway and Security; Gradle multi-project; Maven with Liquibase
        JavaScript, TypeScript and Node17 of 17 passWebStormNext.js, Express, a pnpm monorepo, Angular
        Rust32 of 32 passRustRoverWorkspaces, Cargo features, tests, Clippy, lldb-dap
        Python16 of 16 passPyCharmDjango, FastAPI, pytest, ruff, mypy
        C and C++12 of 12 passCLionCMake with presets and GoogleTest, a Makefile project, gdb
        The real servers5 of 5 passrust-analyzer, Pyright, the TypeScript server, clangd, debugpyDiagnostics, hover, definition, completion, references, a quick fix and rename, on Linux

        What these suites don't prove yet

        • Most checks run against stand-ins for the build tools, servers and debuggers; the real-tool run covered the five tools above, on Linux only, on 28 October 2026.
        • Not run with the real tools yet: jdtls and java-debug, Dart's analysis server and Flutter's debug adapter, js-debug, CodeLLDB, and the Vue, Svelte, Angular and Tailwind servers. Nothing has run on macOS or Windows.
        • Each suite lists what's still missing against its IDE, such as type-aware Spring analysis across libraries and database tools for Java.
        Pulse with RatingController.java open and the Endpoints panel listing the Spring Boot endpoints: GET, POST, PUT and DELETE on /api/ratings, GET /api/albums/{id}/score and GET /actuator/health, each with its method name.
        Spring Boot's endpoints beside the code, from Pulse's screen tests (example project).
        05 · Secrets

        Secrets caught before they leave.

        Pulse runs the rules of Avlory's own secret scanner, rebuilt in Rust, as you type, on save, before every share and once over history. Nothing leaves your computer. A secret moves to a git-ignored .env in one undoable step, with the line rewritten to read it. Add a key below, or type one.

        lib/services/places_api.dart

        Language

        The keys here are made up in your browser, and the four rules are a few of the scanner's.

        Same rules everywhere

        First build

        The same rule ids and allowances as Avlory's own scanner, so a finding means the same thing in Pulse, in Sprout and in CI.

        Six languages rewritten

        First build

        Dart, Java, JavaScript, TypeScript, Python and Rust lines are rewritten to read the variable; the plan is shown before it's applied.

        Values stay masked

        First build

        Findings are diagnostics with the value masked, in the editor, in Problems and before every share.

        Keychain and deploy stores

        Later

        Moves to the system keychain or a deployment's secret store are planned; the first build moves to .env only.

        Pulse's That looks like a secret dialog over places_api.dart: three places to move the key (System keychain, coming in a later build; .env, git-ignored, picked; Secret Manager, coming later), the line before and after, what .env and .gitignore get, a warning to rotate the key, and Move to .env and rewrite.
        Moving a secret, from Pulse's screen tests. The key in the picture is a made-up test value.
        06 · AI

        No AI until you plug it in.

        No AI code is loaded until you connect a provider: Claude, Gemini, ChatGPT, Grok or DeepSeek with your own key, or Claude Code and Gemini CLI so a subscription you already have works. Each project then grants what AI can see and do, and you can take it back at once. Edits arrive as proposals you accept change by change; secrets files stay unreadable and everything is logged.

        waverate · AI log for this projectAI off
          Provider
          This project lets AI

          An illustration of the grant rules, not a real model.

          Inline suggestions are your choice

          First build

          Ghost text is off until you switch it on, and while it's off nothing is sent. Pulse asks during setup.

          Hand off a failure

          First build

          One action bundles an error, the stack, the code around it and the logs, with secrets removed, for an agent or the clipboard.

          Cost you can see

          First build

          Tokens and cost per request and per project, with monthly caps.

          Tested with stand-ins

          Not with real CLIs yet

          The providers and the Agent Client Protocol are tested against fake servers; Claude Code and Gemini CLI haven't been tried for real yet.

          Pulse with the AI panel open on Claude: the tokens and cost so far against a 20 dollar cap, an explanation of a misspelled field, and a proposed edit to rating_card.dart in two parts, one turned down and one waiting, with Accept and Turn down for each and Apply 1 of 2.
          A proposed edit from a plugged-in provider, from Pulse's screen tests. In those tests a stand-in server plays the provider.
          07 · Cloud and frameworks

          Your backend, beside your code.

          Pulse works with your own Cloudflare and Firebase accounts, and it reads Spring Boot and Flutter projects the way those frameworks do. Nothing is tied to Avlory: no account, project or domain of ours is named anywhere in Pulse. Every change that reaches the internet is shown as a plan and runs only after you confirm it.

          Cloudflare

          First build

          Uses your wrangler login or an API token kept in the system keychain. DNS records with history and undo, cache purges (offered after a deploy), wrangler dev as a run configuration and live logs from wrangler tail.

          R2, KV and D1

          First build

          Browse buckets, namespaces and databases. D1 answers read-only SQL at once; uploads, deletes and writes are plans you confirm.

          Share a live server

          First build

          Open your dev server to the internet with a Cloudflare Tunnel: a quick link that needs no account, or your own named tunnel. Pulse installs a pinned, checksum-checked cloudflared only if you agree.

          Firebase emulators

          First build

          Starts any project's Emulator Suite as a run configuration. You can read and edit its Firestore documents and Auth users, run the project's rules tests in Pulse's test panel, and follow Cloud Functions logs. Hosting preview channels go through your own firebase login.

          Spring Boot

          First build

          Beans, injection points and endpoints are read from the code, and the bean graph is resolved the way Spring resolves it, including profiles. While the app runs, Pulse shows live health, beans, mappings and metrics from Actuator, with secrets masked.

          JPA and SQL schemas

          First build

          Pulse builds the database schema from your Flyway, Liquibase or schema.sql migrations, without needing a database. It checks entities, Spring Data queries, @Query JPQL and native SQL against that schema.

          Flutter

          First build

          Shows each build's widget tree, with wrap, remove and extract actions. Also handles the pubspec's dependencies (outdated, upgrade, get), assets, localisation keys, navigation and flutter doctor.

          Database connections

          Before launch

          Connect to a running PostgreSQL, MySQL or SQLite database, with a query console and a data browser. Not built yet; planned for the first release.

          Tested against stand-ins: Cloudflare's API, the Firebase emulators, wrangler and cloudflared are fake versions on the test machine. Pulse hasn't run them against real accounts yet.

          Status

          Where Pulse is today.

          In development. The first phase-1 slice is built: the Rust engine and the Flutter desktop app. Avlory's own developers switch from VS Code and IntelliJ once every item on Pulse's switch checklist passes, keeping their old IDE as a fallback. Pulse and Sprout ship first, together. Downloads open through the waitlist.

          Tested

          • On a Linux build machine with 4 cores and no graphics card.
          • The engine's Rust tests, the parity suites, and the app's widget, accessibility and screen tests.
          • Five real tools on Linux: rust-analyzer, Pyright, the TypeScript server, clangd and debugpy.

          Not tested yet

          • The GPU editor surface, which isn't built yet.
          • Windows, macOS, iOS and Android builds on real machines.
          • jdtls, Dart's server, Flutter's debug adapter and js-debug with the real tools.
          • Claude Code and Gemini CLI with the real programs.
          • Cloudflare, Firebase and cloudflared with real accounts.
          • Free forever, open source

            Pulse is Apache 2.0, and its plugins are always free: no paid plugins.

          • Never locked out offline

            One Avlory ID sign-in to set up; offline after that.

          • AI never changes work silently

            Every AI change is a visible, undoable proposal, logged per project.

          • Nothing collected by default

            Crash reports are opt-in and show what they send first. All the promises

          Waitlist

          Try Pulse First.

          Pulse's downloads open through the waitlist. We'll email you when it's ready on your platform.

          Which apps?

          It helps us decide what to finish first.0 / 500