{"id":46739258,"url":"https://github.com/singnet/das","last_synced_at":"2026-03-09T17:17:36.273Z","repository":{"id":227722502,"uuid":"772226842","full_name":"singnet/das","owner":"singnet","description":null,"archived":false,"fork":false,"pushed_at":"2026-03-02T20:12:23.000Z","size":106269,"stargazers_count":15,"open_issues_count":109,"forks_count":7,"subscribers_count":5,"default_branch":"master","last_synced_at":"2026-03-02T20:39:58.211Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/singnet.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG","contributing":null,"funding":null,"license":null,"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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-03-14T19:23:39.000Z","updated_at":"2026-03-02T17:00:38.000Z","dependencies_parsed_at":"2024-03-14T21:31:04.049Z","dependency_job_id":"d9acc898-83d0-4a03-a994-28a869e67cd5","html_url":"https://github.com/singnet/das","commit_stats":null,"previous_names":["singnet/das"],"tags_count":37,"template":false,"template_full_name":null,"purl":"pkg:github/singnet/das","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/singnet%2Fdas","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/singnet%2Fdas/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/singnet%2Fdas/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/singnet%2Fdas/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/singnet","download_url":"https://codeload.github.com/singnet/das/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/singnet%2Fdas/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30304172,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-09T14:33:48.460Z","status":"ssl_error","status_checked_at":"2026-03-09T14:33:48.027Z","response_time":61,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2026-03-09T17:17:34.284Z","updated_at":"2026-03-09T17:17:36.264Z","avatar_url":"https://github.com/singnet.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# OpenCog Hyperon - Distributed Atomspace (DAS)\n\nThe Distributed Atomspace (DAS) is an extension of OpenCog Hyperon's Atomspace. It works as an independent component, designed to facilitate multiple simultaneous connections with diverse AI algorithms.\nMore details about how DAS components work can be found in [this document](https://github.com/singnet/das/blob/master/docs/conceptual_documentation.md).\n\n## Project\n\nThese are the Github repos we're currently using in the project:\n\n* [Source code (this repo)](https://github.com/singnet/das) - Main DAS source code\n* [Simplified MeTTa parser](https://github.com/singnet/das-metta-parser) - Simple parser to load knowledge bases (no actual MeTTa command interpretation/execution)\n* [Database adapter](https://github.com/singnet/das-database-adapter) - Adapter to use DBMSs as atomspaces\n* [Command line tools](https://github.com/singnet/das-toolbox)  - Tools to configure and deploy DAS components\n* [Protobuf definitions](https://github.com/singnet/das-proto) - Remote API used all along DAS' components\n* [Github actions library](https://github.com/singnet/das-cicd) - CI/CD scripts used in DAS repos\n* [NuNET/Rejuve PoC](https://github.com/singnet/das-nunet-rejuve-poc) - Simple use case to assess DAS cognitive capabilities\n* Vultr [pre-infra](https://github.com/singnet/das-pre-infra-vultr) and [infra](https://github.com/singnet/das-infra-stack-vultr) - Infra deployment/setup in Vultr\n* AWS [pre-infra](https://github.com/singnet/das-pre-infra-aws) and [infra](https://github.com/singnet/das-infra-stack-aws) - Infra deployment/setup in AWS\n\nThese repos are frozen and deprecated:\n\n* https://github.com/singnet/das-atom-db\n* https://github.com/singnet/das-query-engine\n* https://github.com/singnet/das-serverless-functions\n* https://github.com/singnet/das-attention-broker\n* https://github.com/singnet/das-node\n* https://github.com/singnet/das-postgres-lobe\n* https://github.com/singnet/das-openfaas-templates\n* https://github.com/singnet/das-poc\n\nIssues for project management are kept in two boards:\n\n* [Public board](https://github.com/orgs/singnet/projects/7) - GitHub project board used to track bug reports, feature requests, and major new features planning. Use this board to report bugs or request new features.\n* [Development board](https://github.com/orgs/singnet/projects/6/views/1) - Used internally by the DAS Team for day-by-day work planning.\n\nWe have a support community in Discourse: [hyperon.discourse.group](https://hyperon.discourse.group)\n\n## DAS Usage\n\nDAS (Distributed AtomSpace) is an extension to Hyperon that allows the use of\nvery large knowledge bases by offering a query API (fully integrated with\nMeTTa) that uses several internal cognitive components to improve query\nexecution performance. The actual backend used to persist the knowledge base can\nbe configured to use any DBMS or combination of DBMSs.\n\nCurrently, DAS is integrated with [Hyperon Experimental](https://github.com/trueagi-io/hyperon-experimental/)\nand can be used as a special type of space. Integration with other MeTTa interpreters\nis possible and are being planned for the near future.\n\nIn order to use DAS in Hyperon Experimental, you need to install our\nconfiguration command-line tool,\n[das-cli](https://github.com/singnet/das-toolbox/blob/master/das-cli/README.md),\nand to use it to configure the DAS components you are planning to use:\n\n* AtomDB\n* Query Engine\n* Evolution agent\n* Link Creation agent\n* Inference agent\n\nIn this [README](https://github.com/singnet/das/blob/master/docs/das-cli-users-guide.md) we provide details and examples\nof the various commands we use here to configure DAS. Please refer to it to better understand the command line parameters\nwe mention below. `das-cli` also has `man pages` and an embedded documentation (invoked with `--help`) which are installed\ntogether with the toolbox package.\n\nIn addition to this documentation, we also have a couple of [Jupyter](https://jupyter.org) notebooks with hands-on examples\nof how to configure DAS and use it inside Hyperon Experimental. These notebooks can be found \n[here](https://github.com/singnet/das/tree/master/notebooks).\n\n### 1. Configuring your DAS environment\n\nTo configure your DAS environment, just run\n\n```\ndas-cli config set\n```\n\nIf you are setting up a new environment, it's safe to hit `\u003cENTER\u003e` and accept all suggested default values. Just make sure\nyou don't have any other tool listening to the PORT numbers we are using.\n\n### 2. Starting an AtomDB\n\nThe AtomDB is where the knowledge base is persisted. If you already have a persisted AtomDB you can just\nstart the Atom DB by calling\n\n```\ndas-cli db start\n```\n\nIf you don't have your knowledge base persisted as an AtomDB yet, you need to load it as a MeTTa file by calling\n\n```\ndas-cli db start\ndas-cli metta load /absolut/path/to/test/metta/file/at/das/src/tests/animals_extended.metta\n```\n\nYou're supposed to see an output like this:\n\n```tty\n$ das-cli db start\nStarting Redis service...\nRedis has started successfully on port 29000 at localhost, operating under the server user senna.\nStarting MongoDB service...\nMongoDB has started successfully on port 28000 at localhost, operating under the server user senna.\n$ das-cli metta load /absolut/path/to/test/metta/file/at/das/src/tests/animals_extended.metta\ndas-cli-mongodb-28000 is running on port 28000\ndas-cli-redis-29000 is running on port 29000\nLoading metta file /tmp/animals_extended.metta...\nConnecting to Redis at localhost:29000\nConnecting to MongoDB at localhost:28000\nDone.\n```\n\nOptionally, we support the usage of some backends directly without the need to\nexport the data to MeTTa and load them in DAS. It means you can use the DBMS server directly\nto feed the AtomDB. Newly created atoms are not sent back to the DBMS yet but this is a planned\nfeature for the (near to) mid future.\n\nCurrently we support [Postgresql](https://www.postgresql.org) and \n[Mork](https://github.com/trueagi-io/MORK/blob/server/README.md) but we are working to extend this list. \nLook [here](https://github.com/singnet/das/blob/master/docs/database-adapter-users-guide.md)\nfor complete documentation on how to use our Database Adapter.\n\n### 3. Starting the AttentionBroker\n\n[das-cli](https://github.com/singnet/das-toolbox) can be used to start/stop any\nof the DAS components. So you should use it to start the AttentionBroker.\n\n```\ndas-cli attention-broker start\n```\n\nYou're supposed to see an output like this:\n\n```tty\n$ das_cli.py attention-broker start\nStarting Attention Broker service...\nAttention Broker started on port 40001\n```\n\n### 4. Starting Query Engine and other agents\n\nSimilarly, you can use `das-cli` to start the Query Engine and the other DAS agents. The Query Engine is\na mandatory component but the other agents are optional.\n\n```\ndas-cli query-agent start\ndas-cli evolution-agent start\ndas-cli context-broker start\ndas-cli link-creation-agent start\ndas-cli inference-agent start\n```\n\n## Contributing with DAS\n\nIf you want to contribute to DAS project, please read our [Development Guidelines](https://github.com/singnet/das/blob/master/docs/developer_guidelines.md) first and join our [support community](https://hyperon.discourse.group).\n\n**Building and running unit tests**\n\nClone this repo and build DAS components:\n\n```\ngit clone git@github.com:singnet/das.git\ncd das\nmake build-all\n```\n\nWe have `make` commands for most of the usual things we need to do in the repo\n(building, running tests, code-style formatting, running agents, etc). The only thing we need to\ndo with `das-cli` is the DB setup. See how to install/configure `das-cli` [here](https://github.com/singnet/das-toolbox).\n\nTo run unit tests you're are supposed to use the default values in `das-cli config set`.\n\n```\n$ das-cli config set\nEnter Redis port [40020]:\nIs it a Redis cluster? [y/N]: \nEnter MongoDB port [40021]:\nEnter MongoDB username [admin]:\nEnter MongoDB password [admin]:\nIs it a MongoDB cluster? [y/N]: \nEnter Jupyter Notebook port [40019]: \nEnter the Attention Broker port [40001]:\nEnter the Query Agent port [40002]: \nEnter the Link Creation Agent Server port [40003]: \nEnter the Inference Agent port [40004]: \nEnter the Evolution agent port [40005]: \nEnter the Context Broker port [40006]: \n```\n\nTo run unit tests, firstly you need to setup an AtomDB and a Mork server. First the AtomDB.\n\n```\ndas-cli db start\n```\n\nThe expected output is like this:\n\n```\nStarting Redis service...\nRedis has started successfully on port 29000 at localhost, operating under the server user senna.\nStarting MongoDB service...\nMongoDB has started successfully on port 28000 at localhost, operating under the server user senna.\n```\n\nNow, start the AttentionBroker.\n\n```\nmake run-attention-broker \u0026\n```\n\nThe expected output is like this:\n\n```\n2025-10-27 17:32:27 | [INFO] | AttentionBroker server listening on 0.0.0.0:37007\n```\n\nThen, start the Mork server:\n\n```\nmake run-mork-server \u0026\n```\n\nThe expected output is like this:\n\n```\nServer starting. 15 worker threads. Listening on 0.0.0.0:8000...\n```\n\nNow we need to copy the testing knowledge base to `/tmp` and load into Mork.\n```\ncp src/tests/assets/animals_extended.metta /tmp\n```\n\n```\nmake mork-loader FILE=/tmp/animals_extended.metta\n```\n\nThe expected output is like this:\n\n```\nServing /tmp at http://0.0.0.0:38800/\nUsing port:  38800\nProcessing: cmd=import, args=[String(\"$x\"), String(\"$x\")]\nProcessing: cmd=status, args=[Expr([192])]\n127.0.0.1 - - [27/Oct/2025 16:29:43] \"GET /file.metta HTTP/1.1\" 200 -\nSuccessful download from 'http://0.0.0.0:38800/file.metta', file saved to '\"/tmp/0000000000000000-0000000000000000-13c42c9d3a4d4054\"'\nLoaded 81 atoms from MeTTa S-Expr\nImport command successful\nProcessing: cmd=status, args=[Expr([192])]\nDone!\nStatic server stop.\n```\n\nNow we are ready to run unit tests.\n\n```\nmake test-all\n```\n\nYou may want to start the AttentionBroker and the Mork Server in separate terminals to make log messages cleaner.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsingnet%2Fdas","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsingnet%2Fdas","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsingnet%2Fdas/lists"}