{"id":17672156,"url":"https://github.com/ctc-oss/omega-edit","last_synced_at":"2026-04-11T04:06:24.574Z","repository":{"id":37052352,"uuid":"416434803","full_name":"ctc-oss/omega-edit","owner":"ctc-oss","description":"Open source library for building editors that can handle massive files, and multiple viewports.","archived":false,"fork":false,"pushed_at":"2024-10-29T12:25:45.000Z","size":17163,"stargazers_count":8,"open_issues_count":6,"forks_count":6,"subscribers_count":4,"default_branch":"main","last_synced_at":"2024-10-29T14:51:40.372Z","etag":null,"topics":["apache2","c","cmake","cpp","cross-platform","edit","grpc","library","protobuf","scala"],"latest_commit_sha":null,"homepage":"https://ctc-oss.github.io/omega-edit/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ctc-oss.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-10-12T17:30:49.000Z","updated_at":"2024-10-29T12:24:26.000Z","dependencies_parsed_at":"2024-01-04T15:27:18.511Z","dependency_job_id":"819d5c95-7569-405a-a847-a8536d8200ad","html_url":"https://github.com/ctc-oss/omega-edit","commit_stats":{"total_commits":950,"total_committers":14,"mean_commits":67.85714285714286,"dds":0.6147368421052631,"last_synced_commit":"44c3ff5a3c474980cdffae2cb6b0f2f41746fbad"},"previous_names":[],"tags_count":95,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctc-oss%2Fomega-edit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctc-oss%2Fomega-edit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctc-oss%2Fomega-edit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctc-oss%2Fomega-edit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ctc-oss","download_url":"https://codeload.github.com/ctc-oss/omega-edit/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":229996066,"owners_count":18156929,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apache2","c","cmake","cpp","cross-platform","edit","grpc","library","protobuf","scala"],"created_at":"2024-10-24T04:07:10.167Z","updated_at":"2026-04-11T04:06:24.544Z","avatar_url":"https://github.com/ctc-oss.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!--\n  Copyright (c) 2021 Concurrent Technologies Corporation.\n\n  Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance\n  with the License.  You may obtain a copy of the License at                                                    \n\n      http://www.apache.org/licenses/LICENSE-2.0\n\n  Unless required by applicable law or agreed to in writing, software is distributed under the License is       \n  distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or              \n  implied.  See the License for the specific language governing permissions and limitations under the License.  \n--\u003e\n\n\u003cdiv align=\"center\"\u003e\n\u003cp\u003e\n    \u003cimg alt=\"Ωedit™ Logo\" src=\"https://raw.githubusercontent.com/ctc-oss/omega-edit/main/images/OmegaEditLogo.png\" width=120\u003e\n\u003c/p\u003e\n\n\u003ch1\u003eΩedit™ Library\u003c/h1\u003e\n\n\n[![Release](https://shields.io/github/v/release/ctc-oss/omega-edit?display_name=tag\u0026include_prereleases\u0026sort=semver)](https://github.com/ctc-oss/omega-edit/releases)\n![Build Status](https://github.com/ctc-oss/omega-edit/workflows/Unit%20Tests/badge.svg)\n![CodeQL](https://github.com/ctc-oss/omega-edit/workflows/CodeQL/badge.svg)\n[![codecov](https://codecov.io/github/ctc-oss/omega-edit/graph/badge.svg?branch=main)](https://app.codecov.io/github/ctc-oss/omega-edit/tree/main)\n[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fctc-oss%2Fomega-edit.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Fctc-oss%2Fomega-edit?ref=badge_shield)\n[![Join the chat at https://gitter.im/ctc-oss/community](https://badges.gitter.im/ctc-oss/community.svg)](https://gitter.im/ctc-oss/community)\n\n\u003c/div\u003e\n\n## Goal\n\nThe goal of this project is to provide an open source library for building editors that can handle massive files, and\nmultiple viewports.\n\n## Quick Start\n\n| I want to… | Install | Time |\n|---|---|---|\n| **Use Ωedit™ from TypeScript / Node.js** | `npm install @omega-edit/client` | 2 min |\n| **Build a VS Code extension** | See [`examples/vscode-extension/`](examples/vscode-extension/) | 5 min |\n| **Use the C/C++ library** | [Pre-built binaries](https://github.com/ctc-oss/omega-edit/releases) or build from source (see below) | 5 min |\n\n**TypeScript — first edit in 15 lines:**\n\n```typescript\nimport { startServer, getClient, createSession, destroySession,\n         saveSession, insert, stopServerGraceful, IOFlags } from '@omega-edit/client'\n\nconst main = async () =\u003e {\n  await startServer(9000)              // start bundled native server\n  await getClient(9000)                // connect\n  const s = await createSession()      // empty session\n  const id = s.getSessionId()\n  await insert(id, 0, Buffer.from('Hello, Ωedit™!'))\n  await saveSession(id, 'output.dat', IOFlags.OVERWRITE)\n  await destroySession(id)\n  await stopServerGraceful()\n}\nmain().catch(console.error)\n```\n\nSee the [Quick Start guide in the wiki](https://github.com/ctc-oss/omega-edit/wiki#quick-start) for C/C++ and VS Code extension paths, plus links to all examples.\n\n## Naming Conventions\n\nUse these naming rules in user-facing documentation:\n\n- **`Ωedit™`** is the project and product name in prose, headings, release notes, and other user-facing text.\n- **`omega-edit`** is the repository name, URL slug, release-asset stem, and Docker image stem.\n- **`@omega-edit/...`** is the npm package scope.\n- **`omega_edit`** is the C/C++ and protobuf identifier form used in symbols, include paths, and proto namespaces.\n\nExamples:\n\n- say \"Build a VS Code extension powered by Ωedit™\"\n- use `https://github.com/ctc-oss/omega-edit`\n- import `@omega-edit/client`\n- include `omega_edit/edit.h`\n\n## AI Tooling\n\nUse `@omega-edit/ai` for a JSON-first `oe` CLI and a stdio MCP server that expose bounded reads, reversible edits, and binary-safe large-file operations.\n\n```bash\nnpm install @omega-edit/ai\nnpx omega-edit-mcp\n\n# or use the CLI directly\nnpx oe create-session --file ./sample.bin\nnpx oe view --session \u003csession-id\u003e --offset 0 --length 64\n```\n\nTo use the MCP server from Codex in this checkout, the repo now includes a project-scoped `.codex/config.toml`:\n\n```toml\n[mcp_servers.omega-edit]\ncommand = \"node\"\nargs = [\"./packages/ai/dist/cjs/mcp.js\"]\n```\n\nFor an installed package instead of a source checkout, use the Codex MCP format documented by OpenAI and point it at `npx -y -p @omega-edit/ai omega-edit-mcp`.\n\n### Why Use Ωedit™ for AI Tooling\n\nΩedit™ gives AI agents a safer editing contract than whole-file rewrites or ad hoc scripts:\n\n- bounded reads let an agent inspect only the region it needs instead of loading an entire large file\n- binary-safe edits make it practical to work with headers, metadata blocks, mixed-format files, and other offset-sensitive artifacts\n- transactional changes plus undo/redo make agent actions reversible\n- preview-first patching helps an agent inspect the exact byte range before applying a change\n- machine-readable CLI and MCP responses are easier for agents to consume than terminal scraping\n- the same primitives work for both human-operated scripts and agent-hosted tool calls\n\n## User documentation\n\nUser documentation is published to https://ctc-oss.github.io/omega-edit/.\n\n## Requirements\n\n### Command line tools\n\n\n- **C/C++ compiler** (such as clang, gcc, mingw, or MSVC)\n- **CMake** (https://cmake.org/download/)\n- **conan** C/C++ package manager (https://conan.io)\n- **git** for version control (https://git-scm.com)\n- **make** or **ninja** for running the build scripts (https://www.gnu.org/software/make/ or https://ninja-build.org)\n- **nvm** or **nodeenv** for using specific versions of node.js\n- **doxygen** to generate API documentation (https://www.doxygen.nl)\n- **graphviz** to generate API documentation (https://graphviz.org)\n- **sphinx** to generate user documentation (https://www.sphinx-doc.org)\n  - **sphinx RTD theme** (https://github.com/readthedocs/sphinx_rtd_theme)\n  - **breathe** ReStructuredText and Sphinx bridge to Doxygen (https://github.com/michaeljones/breathe)\n- **yarn** for building, testing, and packaging the node artifacts (https://yarnpkg.com)\n\n### IDE\n\nThe Ωedit™ project is built primarily using [CLion](https://www.jetbrains.com/clion/), though [Visual\nStudio Code](https://code.visualstudio.com/) also works well.\n\n#### Visual Studio Code with CMake Presets\n\nTo use CMake presets in Visual Studio Code, install the [CMake Tools extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cmake-tools) and configure it to use presets:\n\n1. Open the Command Palette (`Ctrl+Shift+P` or `Cmd+Shift+P`)\n2. Run \"Preferences: Open Settings (JSON)\"\n3. Add the following setting:\n   ```json\n   {\n     \"cmake.useCMakePresets\": \"always\"\n   }\n   ```\n4. When you run \"CMake: Configure\", you'll be prompted to select a preset from the available options\n\n## Build the core library (C/C++)\n\n:exclamation: These commands should be executed at the root level of the repository :exclamation:\n\n### Install conan:\n\nConan is the package manager used to install the C/C++ dependencies.  It can be installed via pip.\n\n```bash\npip install conan\n```\n\n### Configure a build:\n\nDepending on your linking needs, Ωedit™ can be built _either_ as a static (e.g., libomega_edit.a) or shared\n(e.g., libomega_edit.so) library.  `Release` or `Debug` versions can be created.  Example programs and documentation can\nalso be built if desired.\n\n#### Using CMake Presets (Recommended):\n\nThe project includes a `CMakePresets.json` file with predefined build configurations. To list available presets:\n\n```bash\ncmake --list-presets\n```\n\nTo configure and build using a preset:\n\n```bash\ncmake --preset ninja-debug-minimal\ncmake --build --preset ninja-debug-minimal\n```\n\nAvailable presets include combinations of:\n- Generators: `ninja-*` or `make-*`\n- Build types: `*-debug` or `*-release`\n- Options: `*-minimal` (no docs/examples), default (all options), or `*-static` (static libraries)\n- CI presets: `ci` (for automated builds) and `ci-docs` (for documentation generation)\n\n#### Using Manual Configuration:\n\nHere is how to build a debug version of a shared library, with no documentation or example programs.\n\n```bash\ncmake -S . -B _build -DCMAKE_BUILD_TYPE=Debug -DBUILD_DOCS=NO -DBUILD_EXAMPLES=NO -DBUILD_SHARED_LIBS=YES\n```\n\n#### Embedding the core library in another CMake project:\n\nIf you want to consume Ωedit™ as a subproject, enable embed mode to automatically disable tests,\ndocumentation, examples, coverage instrumentation, and packaging:\n\n```bash\ncmake -S . -B _build -DOMEGA_EDIT_EMBED_MODE=ON\n```\n\n### Build the configured build:\n\nThis will build the core library, and any example programs or documentation if configured.  Note that the config type\n(`Debug` or `Release`) must match the config type (`CMAKE_BUILD_TYPE`) used when configuring the build.\n\n```bash\ncmake --build _build --config Debug\n```\n\n### Run the test suite:\n\nThis will run the test suite for the core library.  Note that the build config (`Debug` or `Release`) must match the\nconfig type (`CMAKE_BUILD_TYPE`) used when configuring the build.\n\n```bash\nctest --build-config Debug --test-dir _build/core --output-on-failure\n```\n\n### Install the core library:\n\nWe're installing in a directory named `_install` in the root of the repository. This directory can be used as the default\nshared-library location, or you can set OE_LIB_DIR to a custom path. If you just want to use the library itself, you can\ninstall it anywhere you like (e.g., `/usr/local`).\n\n```bash\ncmake --install _build --config Debug --prefix _install\n```\n\n## Packaging Ωedit™ gRPC Server and Node Client\n\n:exclamation: These commands should be executed at the root level of the repository after building/installing the core\nlibrary :exclamation:\n\nBuild, test, and package the server, client, and AI tooling node packages. The server package will include the shared\nlibrary built in the previous step and package a native C++ gRPC server binary. The client package will include the\nnode client, and the AI tooling package will include the `oe` CLI and stdio MCP server.\n\n```bash\nyarn install\nyarn workspace @omega-edit/server package\nyarn workspace @omega-edit/client test\nyarn workspace @omega-edit/ai test\n```\n\nNode packages will be in `.tgz` files located at:\n\n```\n/packages/server/omega-edit-node-server-${VERSION}.tgz\n/packages/client/omega-edit-node-client-${VERSION}.tgz\n/packages/ai/omega-edit-node-ai-${VERSION}.tgz\n```\n\nTagged releases also attach the VS Code extension example as:\n\n```\nomega-edit-hex-editor-v${VERSION}.vsix\n```\n\nMore information about the node packages can be found in the [packages](packages/README.md) folder.\n\n## Release Binaries\n\n[Binary releases](https://github.com/ctc-oss/omega-edit/releases) for macOS (Apple Silicon and x86), Windows (x86), and\nLinux (ARM, and x86; glibc 2.31 or greater required) are built and published via GitHub CI workflows. Tagged releases\nalso attach the reference VS Code extension as a `.vsix` asset.\n\nKnown limitation: Windows client integration tests do not currently cover emoji filenames end-to-end, even though native filesystem coverage exists for those paths.\n\n## Versioning\n\nΩedit™ follows [Semantic Versioning](http://semver.org/). Version information is managed through a single source of truth in the `VERSION` file at the repository root. See [VERSION_MANAGEMENT.md](VERSION_MANAGEMENT.md) for details on updating versions across all components.\n\nPlanning a move from the 1.x line to the 2.x release candidate? Start with the short [v1 to v2 upgrade guide](UPGRADE-v1-to-v2.md).\n\n## \u0026#9889;Powered by Ωedit™\n\n- [Apache Daffodil™ Extension for Visual Studio Code](https://github.com/apache/daffodil-vscode) - The Data Editor\n component of this Visual Studio Code extension is powered by Ωedit™.\n\n## License\n\n[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fctc-oss%2Fomega-edit.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2Fctc-oss%2Fomega-edit?ref=badge_large)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fctc-oss%2Fomega-edit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fctc-oss%2Fomega-edit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fctc-oss%2Fomega-edit/lists"}