Skip to content

Axylith/axle

Axylith — a native research environment

Documentation  ·  File Format  ·  Roadmap  ·  Manifesto

Build CodeQL License: AGPL v3 C++20


The idea

Axylith is one native binary where prose, code, data, and 3D geometry share state, with an integrated AI that can reason about all of them — not as separate tools talking through a clipboard, but as a single surface.

The current build is the substrate: a text editor with multi-line input, save/load to a custom file format, MTSDF text rendering through Vulkan 1.3, and a fully data-driven keybinding system.

The longer arc — document-as-program execution, mesh viewer with AI-driven geometric operations, integrated AI sidebar with structured reasoning — is in the roadmap and the manifesto. That product does not exist yet. This repository is the foundation being built first.


V1 progress

V1 progress


Getting started

Build pipeline: clone, install, configure, build, run

Linux only at present. Tested on Ubuntu 24.04, Arch, and Fedora.

git clone https://github.com/Axylith/axle.git
cd axle
sudo apt install -y \
    build-essential cmake ninja-build \
    libvulkan-dev vulkan-validationlayers \
    libx11-dev libxext-dev \
    glslc
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build build -j
./build/axylith

For Arch and Fedora equivalents and a walkthrough of first save/load, see docs/quickstart.


What works today

Editor

  • Multi-line text editor
  • Full cursor movement (arrows, Home/End, vertical, word jumping)
  • UTF-8 input via X11 input methods
  • Save and load through 16-byte-headered .axl format
  • Plain-text fallback for any non-AXL file

Input + editing

  • Configurable keybindings via axylith.conf
  • Undo / redo with edit-kind coalescing (hybrid time + boundary)
  • Internal clipboard (Ctrl+C / X / V)
  • Word movement (Ctrl+arrows) and word deletion
  • Select-all (Ctrl+A)

Rendering

  • Vulkan 1.3 MTSDF text pipeline
  • Resolution-independent text
  • Sub-pixel accurate positioning
  • On-screen HUD: measured frame time, keystroke-to-submit input latency

Infrastructure

  • CI matrix: GCC 12, 13 × Clang 17 × Debug, Release, RelWithDebInfo
  • Sanitizers: AddressSanitizer, UBSan, ThreadSanitizer
  • CodeQL security analysis on PRs + weekly
  • 79-assertion unit test suite for the editor model

What's on the roadmap

See roadmap.yml for the source of truth that drives the progress bar.

In rough build order: file-open overlay with folder navigation · find / replace · scroll viewport polish · embedded Python interpreter for document-as-program execution · mesh loading and viewport · AI integration sidebar · Wayland / macOS / Windows backends.

The full strategic plan is in the changelog. The reasoning behind the project is in the manifesto.


Tests

cd build
ctest --output-on-failure

Two test executables run in CTest: axl_test covers the on-disk format, editor_test covers the editor model (undo/redo, clipboard, selection, word movement, UTF-8 cursor handling). Sanitizers run in CI on every push. Valgrind Memcheck runs in CI for uninitialized-memory detection that ASan misses.


Project constraints

These are choices about what kind of tool Axylith should be. They reflect tradeoffs, not universal correctness.

Single native binaryNo bundled browser, no JavaScript runtime, no Electron. Smaller install footprint, lower memory baseline; the tradeoff is more work per platform.
Minimal external depsCurrently stb_truetype.h (header-only) plus system libraries. An embedded Python interpreter will be added with the notebook execution layer.
Local-firstFiles on disk are the source of truth. No account required. Network features will be opt-in when they exist.
Readable file format.axl files are plain UTF-8 behind a small binary header. Inspectable with cat or od. No encryption or compression in V1.
Measured latencyInput latency and frame time are displayed in the HUD by code in this repository. The numbers are auditable, not asserted.

File format

.axl is a 16-byte header followed by raw UTF-8 content. Files without the header are loaded as plain text. Full spec in docs/FORMAT.

$ od -An -tx1 -N 16 untitled.axl
 41 58 4c 00  01 00  00 00  00 00 00 00 00 00 00 00
   A  X  L \0   v1     reserved (zeros)

$ tail -c +17 untitled.axl
hello world

A V2 structured format (AXLE magic, 32-byte header) is specified and unit-tested but not yet emitted by the editor. Readers will support both before writers switch.


License

Axylith is licensed under the GNU Affero General Public License v3. A commercial license is available for organizations that cannot comply with AGPL — contact founders@axylith.com.

The companion physics engine (when published) will use BSL-1.1 with a planned conversion to Apache-2.0. Full licensing rationale is in the changelog.


Contributing

This is a small project, currently maintained by one person. Contributions are welcome but the architecture is still in flux — opening an issue before significant work helps ensure it fits the direction.

Active development happens on the development branch; main tracks released versions. Before opening a pull request, please read CONTRIBUTING and the Code of Conduct.


Acknowledgements

Built by Dev Bhatt. Uses font atlas data derived from JetBrains Mono and the MTSDF baking technique described by Viktor Chlumský.

CI infrastructure: GitHub Actions, GitLab CI, CircleCI. Static analysis: SonarCloud, DeepSource, Snyk, CodeQL.

·

About

Axylith is one native binary where prose, code, data, and 3D geometry share state, with an integrated AI that can reason about all of them

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors