A mobile agent system, written in Go, loosely inspired by the Agent Tcl / D'Agents (http://www.cs.dartmouth.edu/~dfk/agents/) system created by Robert S. Gray of Dartmouth college.
Find a file
James Wells 1bcc682b7c
refactor: converted int64 to int32 where appropriate.
refactor: reduced usage of fmt in favor of logs and string concatication.

refactor: minor re-ordering of the data structures to reduce storage space required.
2023-03-21 07:34:10 -07:00
.devcontainer cleanup: Started cleaning up the commenting format. 2023-03-20 07:20:46 -07:00
assets refactor: converted int64 to int32 where appropriate. 2023-03-21 07:34:10 -07:00
cmd/gagent refactor: converted int64 to int32 where appropriate. 2023-03-21 07:34:10 -07:00
docs cleanup: Started cleaning up the commenting format. 2023-03-20 07:20:46 -07:00
internal refactor: converted int64 to int32 where appropriate. 2023-03-21 07:34:10 -07:00
pkg/picol refactor: converted int64 to int32 where appropriate. 2023-03-21 07:34:10 -07:00
.dockerignore fix: updating Go & Alpine versions 2021-08-06 16:10:01 -07:00
.drone.yml Updating versions. 2022-11-21 14:28:30 -08:00
.gitattributes Adding preliminary support for Prometheus metrics. 2021-10-14 10:08:39 -07:00
.gitignore fix: updating Go & Alpine versions 2021-08-06 16:10:01 -07:00
.trivyignore updated dependencies and cleaned up the Readme. 2023-03-15 06:12:32 -07:00
go.mod updated dependencies and cleaned up the Readme. 2023-03-15 06:12:32 -07:00
go.sum updated dependencies and cleaned up the Readme. 2023-03-15 06:12:32 -07:00
LICENSE.md Updated copyright dates. 2023-03-15 06:19:57 -07:00
README.md updated dependencies and cleaned up the Readme. 2023-03-15 06:12:32 -07:00

G'Agent

Maintained Status License

Build Status Go Report Card Docker Pulls

A Golang based mobile agent system loosely inspired by the Agent Tcl / D'Agents system created by Robert S. Gray of Dartmouth college.

Sumary

G'Agent streamlines interplanetary data searches using TCL scripts, allowing efficient communication despite time delays between Earth and Mars.

Purpose

As we move closer and closer to a true space age, we need to start thinking about solutions for various space-age issues, such as the bi-directional time delay between the surface of Mars and the surface of Earth. At present, it takes between 6 and 44 minutes for a single round-trip, making most online data services unusable. G'Agent is a potential solution for data services given the time delay.

Imagine, for a moment, that you are on Mars and need to perform a data search in a specific domain space. You would have to explain it to someone on Earth, and hope they understand enough of the domain space to know where to search and understand you well enough to perform the actual search and then send you the results. With G'Agent, instead, you would write a basic script (TCL), hereafter called an agent, providing various hints about the domain space and the search as TCL code. Your client would then send it to a server, hereafter called a router, on Earth. The router may or may not know anything about the domain space of your search, so the router will use the hints that you provide to attempt to route the agent to known workers or other routers closer to the desired domain space. Eventually, your agent will reach a router whose workers can handle your search. The workers will take the agent, run the script portion, and collect the response(s), returning the response(s) to the router(s) for return to your client.

Example Agent

1  : ###################
2  : ### Hello Earth ###
3  : ###################
4  : set GHINT [split "thermal measurements, gravity measurements, gravity fluctuations" ,]
5  : proc hello_earth {} {
6  :   puts "Hello Earth, does localized tempurature variations alter specific gravity?"
7  : }
8  : hello_earth

Lines 1 - 3 are simple comments.

Line 4 sets the hint(s) as an array.

Lines 5 - 7 defines a procedure called hello_earth that will perform the actual search

Line 8 executes the hello_earth procedure defined above.

History

More information about Agent TCL / D'Agents can be found in the original documentation, and in the project's wiki.